| | | 1 | | using Asp.Versioning; |
| | | 2 | | using Asp.Versioning.ApiExplorer; |
| | | 3 | | |
| | | 4 | | namespace WebApiVersioning; |
| | | 5 | | |
| | | 6 | | public class Program |
| | | 7 | | { |
| | | 8 | | private static void Main(string[] args) |
| | 1 | 9 | | { |
| | 1 | 10 | | var builder = WebApplication.CreateBuilder(args); |
| | | 11 | | |
| | | 12 | | // Add services to the container. |
| | | 13 | | |
| | 1 | 14 | | builder.Services.AddControllers(); |
| | | 15 | | // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle |
| | 1 | 16 | | builder.Services.AddEndpointsApiExplorer(); |
| | 1 | 17 | | builder.Services.AddSwaggerGen(); |
| | 1 | 18 | | builder.Services.AddEndpointsApiExplorer(); |
| | | 19 | | |
| | 1 | 20 | | builder.Services.AddApiVersioning(opt => |
| | 1 | 21 | | { |
| | 1 | 22 | | opt.DefaultApiVersion = new ApiVersion(1, 0); |
| | 1 | 23 | | opt.AssumeDefaultVersionWhenUnspecified = true; |
| | 1 | 24 | | opt.ReportApiVersions = true; |
| | 1 | 25 | | opt.ApiVersionReader = ApiVersionReader.Combine(new UrlSegmentApiVersionReader(), |
| | 1 | 26 | | new HeaderApiVersionReader("x-api-version"), |
| | 1 | 27 | | new MediaTypeApiVersionReader("x-api-version")); |
| | 1 | 28 | | }).AddApiExplorer(options => |
| | 1 | 29 | | { |
| | 1 | 30 | | options.GroupNameFormat = "'v'VVV"; |
| | 1 | 31 | | options.SubstituteApiVersionInUrl = true; |
| | 2 | 32 | | }); |
| | | 33 | | |
| | 1 | 34 | | builder.Services.ConfigureOptions<ConfigureSwaggerOptions>(); |
| | 1 | 35 | | builder.Services.AddApiVersioning(); |
| | | 36 | | |
| | 1 | 37 | | var app = builder.Build(); |
| | | 38 | | |
| | | 39 | | // Configure the HTTP request pipeline. |
| | 1 | 40 | | if (app.Environment.IsDevelopment()) |
| | 1 | 41 | | { |
| | 1 | 42 | | var apiVersionDescriptionProvider = app.Services.GetRequiredService<IApiVersionDescriptionProvider>(); |
| | | 43 | | |
| | 1 | 44 | | app.UseSwagger(); |
| | 1 | 45 | | app.UseSwaggerUI(options => |
| | 1 | 46 | | { |
| | 7 | 47 | | foreach (var description in apiVersionDescriptionProvider.ApiVersionDescriptions) |
| | 2 | 48 | | options.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", |
| | 2 | 49 | | description.GroupName.ToUpperInvariant()); |
| | 2 | 50 | | }); |
| | 1 | 51 | | } |
| | | 52 | | |
| | 1 | 53 | | app.UseHttpsRedirection(); |
| | | 54 | | |
| | 1 | 55 | | app.UseAuthorization(); |
| | | 56 | | |
| | 1 | 57 | | app.MapControllers(); |
| | | 58 | | |
| | 1 | 59 | | app.Run(); |
| | 1 | 60 | | } |
| | | 61 | | } |