【发布时间】:2018-12-14 06:30:16
【问题描述】:
我实现了一个 API 并将其与 Swagger 集成。
启动ConfigureServices:
services
.AddMvcCore()
.AddApiExplorer();
services.AddSwaggerGen(c => {
c.SwaggerDoc("v1", new Info {
Title = "API", Version = "v1"
});
});
启动配置
app.UseSwagger(c => {
c.RouteTemplate = "{documentName}/configuration.json";
});
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/v1/configuration.json", "API");
c.RoutePrefix = "v1/docs";
})
控制器
[Route("v1/[controller]")]
[ApiController]
public class SomeController : ControllerBase {}
到目前为止一切顺利...
像魅力一样工作。但是我升级到最新的[Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer][2] 没有
我同时关注了samples 和documentation,但我无法显示我的操作... 我在这里缺少什么?
启动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>();
});
启动配置
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());
}
})
控制器
//[Route("v1/[controller]")]
[ApiController]
[Route("v{version:apiVersion}/[controller]")]
[ApiVersion("1.0")]
public class SomeController : ControllerBase {}
【问题讨论】:
标签: asp.net-core swashbuckle api-versioning