¿Por qué Swagger no muestra el método con parámetro?
Tengo una aplicación minimalista de api de .NET 6.
Cuando uso un método con parámetro de tipo int como este:
app.MapGet("/calc/{sum1}", (int sum1) =>
{
var msg = String.Format("Hola {sum1}");
Log.Information("/calc/{0} respuesta: {1}", sum1, msg);
return msg;
})
.WithName("Calc");
Entonces la página de Swagger me muestra este método con el parámetro y puedo probarlo.
Pero si uso un método como este:
app.MapGet("/calc3/{prod1}", (Product prod1, CalcSvc calcSvc) =>
{
var msg = String.Format("Hola {prod1}");
Log.Information("/calc3/{0} respuesta: {1}", prod1, msg);
return msg;
})
.WithName("Calc3");
Entonces la página de Swagger muestra el método pero no muestra el parámetro.
¿Qué está mal?
davy.ai
El problema con el método
app.MapGet
que utiliza un parámetro de tipo complejo es que Swagger UI no puede analizar la definición del tipo complejo y, por lo tanto, no puede mostrar la información del parámetro. Para hacer visible el parámetro en Swagger UI, puedes utilizar el atributoProducesResponseType
para especificar el tipo de retorno del método. Por ejemplo:En este ejemplo, hemos especificado que el método devuelve una cadena de texto (
string
) con un código de estado HTTP 200 utilizando el atributoProducesResponseType
. Esto permite que Swagger UI muestre correctamente el método y su parámetro.