剑轩

net core webapi版本控制

电脑版发表于:2019/11/8 15:17

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


关于TNBLOG
TNBLOG,技术分享。技术交流:群号677373950
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
{{item.replyName}}
{{item.content}}
{{item.time}}
{{subpj.replyName}}
@{{subpj.beReplyName}}{{subpj.content}}
{{subpj.time}}
猜你喜欢