webapi的版本控制好处很多,要实现其实也比较简单。
在webapi中根据不同的版本创建文件夹。
然后在不同的api里边添加不同的路由
V1里边:
V2里边
效果如下:
v1版本:
V2版本:
当然如果需要加入更多版本消息可以借助:Microsoft.AspNetCore.Mvc.Versioning -Version
下载: Install-Package Microsoft.AspNetCore.Mvc.Versioning -Version 2.2.0
注意:不同core版本你应该去下载不同的Microsoft.AspNetCore.Mvc.Versioning版本,否者一样的代码都会报错,比如在core3.1下去下载2.2.0版本就会报错。如果想要下载最新版本可以不接版本号。比如core3.1下是可以去使用Microsoft.AspNetCore.Mvc.Versioning5.0版本的
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="5.0.0" />
在ConfigureServices中去引用
services.AddApiVersioning(option => { //为true时API返回支持的版本信息 option.ReportApiVersions = true; //不提供版本时,默认为1.0 option.AssumeDefaultVersionWhenUnspecified = true; //请求中未指定版本时要使用的默认 API 版本 option.DefaultApiVersion = new ApiVersion(1, 0); });
然后在webapi中指定一下:
tip:使用了这种方式后其实可以把根据路由区分版本删除掉,相当于是不同的区分方式,比如通过路由区分,还是header什么的
借助header实现版本控制:
需要配置 ApiVersionReader 选项。代码如下:
请求的时候在header里边提供api-version即可
但是, 现在查询字符串参数的方法进行版本控制将不起作用。一旦设置了header, 就不能指定查询字符串参数。如果您希望支持这两种情况, 而不是 HeaderApiVersionReader, 请使用 QueryStringOrHeaderApiVersionReader,当然也可以使用其他方式
core3.1版本参考代码下载地址:https://download.tnblog.net/resource/index/ba55ad0850ca4b71bc56855d0b4782d1
欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739