Yo uso .NET Framework y el paquete Nuget Swashbuckle. Tengo el controlador con el método.

    [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");
    }

El SwaggerConfig es

    [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 =>
                    {

                    });
        }
    }
}

Pero ahora, cuando ejecuto el proyecto y la URL localHost: 61342 / Swagger / UI / Índice tengo el problema de que los valores y el modelo de ejemplo están vacíos. https://prnt.sc/o7wlqe

Cuando modifico el método para devolver solo el producto está bien.

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

https://prnt.sc/o7wp4d

¿Cómo puedo combinarme para devolver el HTTRRRRESPONSEMESSAGE y para tener los valores y modelo de ejemplo?

1
dimmits 28 jun. 2019 a las 15:48

1 respuesta

La mejor respuesta

Puede declarar el tipo de respuesta a través del atributo 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");
}
3
strickt01 28 jun. 2019 a las 12:57