故如虹,知恩;故如月,知明
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
欢迎加群交流技术

net core webapi版本控制

6057人阅读 2019/11/8 15:17 总访问:3842549 评论:0 收藏:2 手机
分类: .NET Core

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

评价