Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

879
Visualizações
Net Core API: Propósito de ProducesResponseType

Quiero entender el propósito de ProducesResponseType.

Microsoft define como a filter that specifies the type of the value and status code returned by the action.

Así que tengo curiosidad por saber cuáles son las consecuencias si

  • una persona no coloca ProductResponseType?
  • ¿Cómo está el sistema en desventaja, o hay una consecuencia negativa?
  • ¿Acaso la API de Microsoft no conoce automáticamente de forma inherente el tipo/valor del código de estado devuelto?
 [ProducesResponseType(typeof(DepartmentDto), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)]

Documentación de Microsoft: ProducesResponseTypeAttribute Class

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Creo que puede ser útil para los códigos de retorno que no son correctos (200). Digamos que si uno de los códigos de estado de falla devuelve un modelo que describe el problema, puede especificar que el código de estado en ese caso produzca algo diferente al caso de éxito. Puede leer más sobre eso y encontrar ejemplos aquí: https://docs.microsoft.com/en-us/aspnet/core/web-api/action-return-types?view=aspnetcore-2.2

over 4 years ago · Santiago Trujillo Relatório

0

Es para producir metadatos de API abierta para herramientas de exploración/visualización de API como Swagger ( https://swagger.io/ ), para indicar en la documentación lo que el controlador puede devolver.

over 4 years ago · Santiago Trujillo Relatório

0

Aunque ya se envió la respuesta correcta, me gustaría dar un ejemplo. Suponga que ha agregado el paquete Swashbuckle.AspNetCore a su proyecto y lo ha usado en Startup.Configure(...) así:

 app.UseSwagger(); app.UseSwaggerUI(options => { options.SwaggerEndpoint("/swagger/v1/swagger.json", "My Web Service API V1"); options.RoutePrefix = "api/docs"; });

Tener un punto final de acción del controlador de prueba como este:

 [HttpGet] public ActionResult GetAllItems() { if ((new Random()).Next() % 2 == 0) { return Ok(new string[] { "value1", "value2" }); } else { return Problem(detail: "No Items Found, Don't Try Again!"); } }

Dará como resultado una tarjeta/sección de interfaz de usuario de Swagger como esta (Ejecute el proyecto y vaya a /api/docs/index.html):

ingrese la descripción de la imagen aquí

Como puede ver, no se proporcionan "metadatos" para el punto final.

Ahora, actualice el punto final a esto:

 [HttpGet] [ProducesResponseType(typeof(IEnumerable<string>), 200)] [ProducesResponseType(404)] public ActionResult GetAllItems() { if ((new Random()).Next() % 2 == 0) { return Ok(new string[] { "value1", "value2" }); } else { return Problem(detail: "No Items Found, Don't Try Again!"); } }

Esto no cambiará en absoluto el comportamiento de su terminal, pero ahora la página de swagger se ve así:

ingrese la descripción de la imagen aquí

Esto es mucho mejor, porque ahora el cliente puede ver cuáles son los posibles códigos de estado de respuesta y, para cada estado de respuesta, cuál es el tipo/estructura de los datos devueltos. Tenga en cuenta que, aunque no he definido el tipo de devolución para 404, ASP.NET Core (estoy usando .NET 5) es lo suficientemente inteligente como para establecer el tipo de devolución en ProblemDetails .

Si este es el camino que desea tomar, es una buena idea agregar Web API Analyzer a su proyecto para recibir algunas advertencias útiles.

ps También me gustaría usar options.DisplayOperationId(); en la configuración app.UseSwaggerUI(...). Al hacerlo, la interfaz de usuario de Swagger mostrará el nombre del método .NET real que se asigna a cada punto final. Por ejemplo, el punto final anterior es un GET a /api/sample pero el método .NET real se llama GetAllItems()

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda