Для этого конкретного случая я решил:
в Configure:
app.UseSwagger(options =>
{
options.RouteTemplate = "api/docs/{documentName}/swagger.json";
});
app.UseSwaggerUI
(
options =>
{
options.DocumentTitle = "...";
options.RoutePrefix = "api/docs";
foreach (var description in provider.ApiVersionDescriptions)
{
options.SwaggerEndpoint($"{description.GroupName}/swagger.json", "API " + description.GroupName.ToUpperInvariant() + " Specs");
}
}
);
в ConfigureServices:
services.AddVersionedApiExplorer(options =>
{
options.GroupNameFormat = "'v'VVV";
});
services.AddTransient<IConfigureOptions<SwaggerGenOptions>, ConfigureSwaggerApiVersioning>();
и сервис конфигурации, например:
public class ConfigureSwaggerApiVersioning : IConfigureOptions<SwaggerGenOptions>
{
private readonly IApiVersionDescriptionProvider _provider;
public ConfigureSwaggerApiVersioning(IApiVersionDescriptionProvider provider)
{
_provider = provider;
}
private static Info CreateInfoForApiVersion(ApiVersionDescription description)
{
return new Info()
{
//Title = "...",
Version = description.ApiVersion.ToString(),
//Description = "...",
Contact = new Contact() { Name = "...", Email = "..." },
//TermsOfService = "..."
//License = new License() { Name = "...", Url = "..." }
};
}
public void Configure(SwaggerGenOptions options)
{
foreach (var description in _provider.ApiVersionDescriptions)
{
options.SwaggerDoc(description.GroupName, CreateInfoForApiVersion(description));
}
}
}