我正在尝试将URL版本引入我的.Net Core WebAPI应用程序中。我还使用Swagger网络工具来简化用户的使用。
现在,在尝试将版本控制引入我的应用程序时,我在这里引用了文档:https://github.com/Microsoft/aspnet-api-versioning/wiki/New-Services-Quick-Start#aspnet-core
现在,我对代码进行了以下更改:
Startup.cs / ConfigureServices我在下面添加了代码:
services.AddApiVersioning(options => {
options.AssumeDefaultVersionWhenUnspecified = true;
});
现在,在添加任何版本控制之前,我的控制器注释如下所示:
[Produces("application/json")]
[Route("api/controllerName")]
并生成一个如下所示的URL:
http://localhost:12003/swagger/#!/Workspace/GetAll
现在,我在下面添加了注释以启用api版本控制:
. [ApiVersion("1.0")]
[Produces("application/json")]
[Route("api/v{version:apiVersion}/workspace")]
现在,当我单击我的招摇UI中列出的相同方法时
该网址如下所示:
http://localhost:12003/swagger/#!/controllername/ApiV_versionGetAll
而我所期望的却是这样:
http://localhost:12003/swagger/#!/controllername/V1.0/GetAll
现在我也大张旗鼓地问我有关输入版本号的问题。所以我认为我的问题可以归结为两点:
答案 0 :(得分:1)
用招摇过头设置api版本确实是一件棘手的事情,因为其中很多部分需要正确设置。
幸运的是,有一个很棒的nuget软件包,叫做 SwashbuckleAspNetVersioningShim ,可以很好地解决这个问题。
添加
Install-Package SwashbuckleAspNetVersioningShim -Version 2.2.1
然后按照自述文件here
答案 1 :(得分:1)
您缺少的是支持API版本感知API Explorer的API版本补充软件包:
JavaFX WebView can't load certain sites
Install-Package Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer
API Explorer是Swashbuckle之类的Swagger生成器如何完成所有工作的方式。 API版本库中也提供了源代码和链接。
要获得所需的结果,您需要在URL中配置API版本替换:
services.AddMvcCore().AddVersionedApiExplorer( options => options.SubstituteApiVersionInUrl = true );
注意:API Versioning 3.0+中不再要求调用
AddMvcCore()
文档和示例可在官方API版本库中找到。我建议阅读 API文档 Wiki主题:
https://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer
可接受的答案扩展了此程序包,只要它与您正在使用的API版本保持一致,就可以了。 API版本控制始终在每个发行版中都提供兼容的API Explorer扩展。