I implemented an API and integrated it with Swagger.
Startup ConfigureServices:
services
.AddMvcCore()
.AddApiExplorer();
services.AddSwaggerGen(c => {
c.SwaggerDoc("v1", new Info {
Title = "API", Version = "v1"
});
});
Startup Configure
app.UseSwagger(c => {
c.RouteTemplate = "{documentName}/configuration.json";
});
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/v1/configuration.json", "API");
c.RoutePrefix = "v1/docs";
})
Controller
[Route("v1/[controller]")]
[ApiController]
public class SomeController : ControllerBase {}
So far so good...
Works like a charm. However my upgrade to the latest [Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer][2]
doesn't
I followed both the samples as well as the documentation but I can't get my operations to show... What am I missing here?
Startup ConfigureServices
services
.AddMvcCore()
//.AddApiExplorer()
.AddVersionedApiExplorer( o => o.GroupNameFormat = "'v'VVV" );
services.AddApiVersioning(o => o.ReportApiVersions = true);
services.AddSwaggerGen(c => {
// c.SwaggerDoc("v1", new Info {
// Title = "API", Version = "v1"
// });
foreach (var description in provider.ApiVersionDescriptions)
{
c.SwaggerDoc(
description.GroupName,
new Info()
{
Title = $"API",
Version = description.ApiVersion.ToString()
});
}
c.OperationFilter<SwaggerDefaultValues>();
});
Startup Configure
app.UseSwagger(c => {
c.RouteTemplate = "{documentName}/configuration.json";
});
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/v1/configuration.json", "API");
c.RoutePrefix = "v1/docs";
foreach (var description in apiProvider.ApiVersionDescriptions)
{
c.SwaggerEndpoint($"/{description.GroupName}/configuration.json", description.GroupName.ToUpperInvariant());
}
})
Controller
//[Route("v1/[controller]")]
[ApiController]
[Route("v{version:apiVersion}/[controller]")]
[ApiVersion("1.0")]
public class SomeController : ControllerBase {}