Когда я возвращаю тип HttpResponseMessage, значение примера и модель пустые в пользовательском интерфейсе swagger - PullRequest
0 голосов
/ 28 июня 2019

Я использую .net framework и пакет nuget Swashbuckle.У меня есть контроллер с методом

    [HttpGet]
    [ActionName("getProductById")]
    public HttpResponseMessage GetProductById([FromUri] int id)
    {
        Product response = service.GetProductById(id);
        if (response != null)
        {

            return Request.CreateResponse<Product>(HttpStatusCode.OK, response);
        }
        return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Not Found");
    }

SwaggerConfig

    [assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]

namespace ProductsApp
{
    public class SwaggerConfig
    {
        public static void Register()
        {
            var thisAssembly = typeof(SwaggerConfig).Assembly;

            GlobalConfiguration.Configuration
                .EnableSwagger(c =>
                    {
                        c.SingleApiVersion("v1", "ProductsApp");
                    })
                .EnableSwaggerUi(c =>
                    {

                    });
        }
    }
}

Но теперь, когда я запускаю проект и url localhost: 61342 / swagger / ui / index у меня естьПроблема в том, что пример значений и модель пуста.https://prnt.sc/o7wlqe

Когда я изменяю метод, чтобы вернуть только продукт в порядке.

    [HttpGet]
    [ActionName("getProductById")]
    public Product GetProductById([FromUri] int id)
    {
        Product response = service.GetProductById(id);
        return response;
    }

https://prnt.sc/o7wp4d

Как я могу объединить, чтобы вернуть HttrResponseMessage иесть пример значений и модель?

1 Ответ

0 голосов
/ 28 июня 2019

Вы можете объявить тип ответа через атрибут ResponseTypeAttribute:

[HttpGet]
[ActionName("getProductById")]
[ResponseType(typeof(Product))]
public HttpResponseMessage GetProductById([FromUri] int id)
{
    Product response = service.GetProductById(id);
    if (response != null)
    {

        return Request.CreateResponse<Product>(HttpStatusCode.OK, response);
    }
    return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Not Found");
}
...