using ApiVersioningDemo.Api; using Asp.Versioning; var builder = WebApplication.CreateBuilder(args); // 1. Configuración de Versionado (YA LO TENÍAS) builder.Services.AddApiVersioning(options => { options.DefaultApiVersion = new ApiVersion(1, 0); options.AssumeDefaultVersionWhenUnspecified = true; options.ReportApiVersions = true; }) .AddMvc() .AddApiExplorer(options => { // IMPORTANTE: El formato "'v'VVV" hace que la versión se llame "v1", "v2", etc. options.GroupNameFormat = "'v'VVV"; options.SubstituteApiVersionInUrl = true; }); // 2. Configuración de Swagger builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); // Esta lógica crea un documento Swagger por cada versión descubierta automáticamente builder.Services.ConfigureOptions(); builder.Services.AddControllers(); var app = builder.Build(); // 3. Activar la Interfaz Gráfica if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(options => { // Genera un endpoint JSON por cada versión que exista en la API var descriptions = app.DescribeApiVersions(); foreach (var description in descriptions) { var url = $"/swagger/{description.GroupName}/swagger.json"; var name = description.GroupName.ToUpperInvariant(); options.SwaggerEndpoint(url, name); } }); } app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run();