diff --git a/Endpoint/Program.cs b/Endpoint/Program.cs index a9156f9..334eccc 100644 --- a/Endpoint/Program.cs +++ b/Endpoint/Program.cs @@ -41,8 +41,33 @@ public class Program policy.AllowAnyOrigin(); }); }); + + builder.Services.AddApiVersioning(options => + { + options.DefaultApiVersion = new ApiVersion(1, 0); + options.AssumeDefaultVersionWhenUnspecified = true; + options.ReportApiVersions = true; + options.ApiVersionReader = new UrlSegmentApiVersionReader(); + }); + + builder.Services.AddVersionedApiExplorer(options => + { + options.GroupNameFormat = "'v'VVV"; + options.SubstituteApiVersionInUrl = true; + }); + builder.Services.AddEndpointsApiExplorer(); - builder.Services.AddSwaggerGen(); + + builder.Services.AddSwaggerGen(options => + { + options.OperationFilter(); + var basePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory); + + var xmlPath = Path.Combine(basePath, "docs.xml"); + options.IncludeXmlComments(xmlPath); + }); + + builder.Services.AddTransient, ConfigureSwaggerOptions>(); var app = builder.Build(); @@ -50,7 +75,17 @@ public class Program if (app.Environment.IsDevelopment()) { app.UseSwagger(); - app.UseSwaggerUI(); + app.UseSwaggerUI(options => + { + var provider = app.Services.GetService(); + + foreach (var description in provider.ApiVersionDescriptions) + { + var url = $"/swagger/{description.GroupName}/swagger.json"; + var name = description.GroupName.ToUpperInvariant(); + options.SwaggerEndpoint(url, name); + } + }); } app.UseHttpsRedirection();