问题描述
我在Swashbuckle中使用Microsoft.AspNetCore.Mvc.Versioning,Swashbuckle使用启动配置为每个版本生成定义文件:
id relates_to_id
1 1
2 1
2 2
. . .
在Swagger用户界面中,这给出了:
URL为:
app.UseSwaggerUI(c =>
{
// generate endpoint for each version
foreach (var description in provider.ApiVersionDescriptions)
{
c.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json",description.GroupName.toupperInvariant());
}
});
我想通过控制器上的属性将api\v1\fruit
引入API路由:
Area
因此,OpenAPI定义文件也按区域划分:
使用网址:
[ApiVersion("2.0")]
[Area("Private")]
我该如何实现?
解决方法
我认为这可能对您有所帮助,尽管我担心这不是一个完整的解决方案。
https://github.com/microsoft/aspnet-api-versioning/issues/516#issuecomment-561348964
看来,如果你使用格式'options.GroupNameFormat = "'v'VVV";' 然后版本控制的最后一部分可以是字母数字,即您应该能够像这样编写版本;
[ApiVersion("3.0.session")]
[ApiVersion( "3.0.authoring" )]
在 tread 的进一步下方,另一个建议使用替代配置,允许您切换名称,以便在 swagger 文档中颠倒版本和名称,即 ApiVersion 3.0.session 变为 {{1} } .