Incluir Swagger en un proyecto ASP.NET Core Razor Pages es una excelente forma de documentar y probar una API.
Como primer paso se debe instalar desde NuGet la dependencia:
Swashbuckle.AspNetCore
Tambien se puede instalar desde PowerShell (dentro de la carpeta de la solucion) con:
Install-Package Swashbuckle.AspNetCore
Solo queda configurar Swagger dentro de 'Program.cs' como muestra el siguiente ejemplo:
var builder = WebApplication.CreateBuilder(args);
// Agregar servicios de Swagger
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Usar Swagger solo en desarrollo o siempre (opcional)
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.MapRazorPages();
app.Run();
Con la siguiente URL en el navegador podemos usar el Swagger:
https://localhost:[puerto]/swagger
Se pueden modificar los datos que aparecen en la vista de Swagger con, por ejemplo:
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new() { Title = "Mi API", Version = "v1" });
});
Para que en la vista de Swagger se muestren descripciones explicativas que se pueden agregar a cada 'Controller'
mediante '///sumary, params, return, responce'.
En el archivo .csproj y agregá:
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);1591</NoWarn>
</PropertyGroup>
En Program.cs agregar:
builder.Services.AddSwaggerGen(c =>
{
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
c.IncludeXmlComments(xmlPath);
});
Si fuera necesario que la API contenga 'Views' ademas del Swagger, se puede creando 'Controllers' distintos para cada cosa. En el siguiente ejemplo
ejecutable se puede ver:
CODIGO.