Files

42 lines
1.2 KiB
C#
Raw Permalink Normal View History

using Asp.Versioning.ApiExplorer;
using Microsoft.Extensions.Options;
using Microsoft.OpenApi;
using Swashbuckle.AspNetCore.SwaggerGen;
namespace ApiVersioningDemo.Api;
public class ConfigureSwaggerOptions : IConfigureOptions<SwaggerGenOptions>
{
private readonly IApiVersionDescriptionProvider _provider;
public ConfigureSwaggerOptions(IApiVersionDescriptionProvider provider)
{
_provider = provider;
}
public void Configure(SwaggerGenOptions options)
{
// Por cada versión de API detectada, crea un documento Swagger
foreach (var description in _provider.ApiVersionDescriptions)
{
options.SwaggerDoc(description.GroupName, CreateInfoForApiVersion(description));
}
}
private static OpenApiInfo CreateInfoForApiVersion(ApiVersionDescription description)
{
var info = new OpenApiInfo()
{
Title = "Mi API Versionada",
Version = description.ApiVersion.ToString(),
Description = "Ejemplo de API REST con versionado en .NET"
};
if (description.IsDeprecated)
{
info.Description += " (Esta versión está obsoleta)";
}
return info;
}
}