private Response CreateResponse(ApiResponseType apiResponseType, ISchemaRegistry schemaRegistry) { var description = ResponseDescriptionMap .FirstOrDefault((entry) => Regex.IsMatch(apiResponseType.StatusCode.ToString(), entry.Key)) .Value; return(new Response { Description = description, Schema = (apiResponseType.Type != null && apiResponseType.Type != typeof(void)) ? schemaRegistry.GetOrRegister(apiResponseType.Type) : null }); }
private Response CreateResponse(ServiceEntry apiResponseType, MethodInfo methodInfo, ISchemaRegistry schemaRegistry) { var description = ResponseDescriptionMap .FirstOrDefault((entry) => Regex.IsMatch("200", entry.Key)) .Value; return(new Response { Description = description, Schema = (methodInfo.ReturnType != typeof(Task) && methodInfo.ReturnType != typeof(void)) ? schemaRegistry.GetOrRegister(typeof(HttpResultMessage <>).MakeGenericType(methodInfo.ReturnType.GenericTypeArguments)) : null }); }
private OpenApiResponse CreateResponse( ApiResponseType apiResponseType, IEnumerable <object> methodAttributes, ISchemaRegistry schemaRegistry) { var description = ResponseDescriptionMap .FirstOrDefault((entry) => Regex.IsMatch(apiResponseType.StatusCode.ToString(), entry.Key)) .Value; var responseContentTypes = InferResponseContentTypes(apiResponseType, methodAttributes); return(new OpenApiResponse { Description = description, Content = responseContentTypes.ToDictionary( contentType => contentType, contentType => CreateResponseMediaType(apiResponseType.Type, schemaRegistry) ) }); }
private OpenApiResponse GenerateResponse( ApiDescription apiDescription, SchemaRepository schemaRepository, string statusCode, ApiResponseType apiResponseType) { var description = ResponseDescriptionMap .FirstOrDefault((entry) => Regex.IsMatch(statusCode, entry.Key)) .Value; var responseContentTypes = InferResponseContentTypes(apiDescription, apiResponseType); return(new OpenApiResponse { Description = description, Content = responseContentTypes.ToDictionary( contentType => contentType, contentType => CreateResponseMediaType(apiResponseType.ModelMetadata, schemaRepository) ) }); }
/// <summary> /// 创建接口返回数据格式 /// </summary> /// <param name="actionDescriptor"></param> /// <param name="schemaRegistry"></param> /// <returns></returns> public Dictionary <string, Response> CreateResponse(ControllerActionDescriptor actionDescriptor, ISchemaRegistry schemaRegistry) { var result = new Dictionary <string, Response>(); var responseType = actionDescriptor.FilterDescriptors .Where(x => x.Filter is IFilterMetadata) .Select(x => x.Filter).OfType <ProducesResponseTypeAttribute>() .DefaultIfEmpty(new ProducesResponseTypeAttribute(200)); foreach (var item in responseType) { var statusCode = item.StatusCode.ToString(); var model = new Response(); model.Description = ResponseDescriptionMap.FirstOrDefault(x => Regex.IsMatch(statusCode, x.Key)).Value; model.Schema = (item.Type != null && item.Type != typeof(void)) ? schemaRegistry.GetOrRegister(item.Type) : null; result.Add(statusCode, model); } return(result); }
public static string GetDescription(string statusCode) { return(ResponseDescriptionMap .FirstOrDefault((entry) => Regex.IsMatch(statusCode, entry.Key)) .Value); }