42 lines
1.2 KiB
C#
42 lines
1.2 KiB
C#
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;
|
|
}
|
|
} |