前言:
在日常项目开发中,随着项目需求不断的累加、不断的迭代;项目服务接口需要向下兼容历史版本;前些时候就因为api接口为做版本管理导致接口对低版本兼容处理不友好。
最近就像了解下如何实现webapi版本控制,那么版本控制有什么好处呢?
webapi版本控制的好处
- 有助于及时推出功能, 而不会破坏现有系统,兼容性处理更友好。
- 它还可以帮助为选定的客户提供额外的功能。
接下来就来实现版本控制以及在swagger ui中接入webapi版本
一、webapi版本控制实现
通过microsoft.aspnetcore.mvc.versioning实现webapi 版本控制
创建webapi项目,添加nuget包:microsoft.aspnetcore.mvc.versioning
修改项目startup文件,使用microsoft.aspnetcore.mvc.versioning
webapi设置版本:
a)通过apiversion标记指定指定控制器或方法的版本号;url参数控制版本(querystringapiversionreader),如下:
通过参数api-version参数指定版本号;调用结果:
b)通过url path segment控制版本号(urlsegmentapiversionreader):为控制器添加路由方式如下,apiversion为固定格式
调用方式:通过调用路径传入版本号,如:http://localhost:5000/api/v1/weatherforecast
c)通过header头控制版本号:在startup中设置(headerapiversionreader、mediatypeapiversionreader)
调用方式,在请求头或中mediatype中传递api版本,如下:
其他说明:
a)reportapiversions设置为true时, 返回当前支持版本号(api-supported-versions);deprecated 参数设置为true表示已弃用,在响应头中也有显示(api-deprecated-versions):
b)maptoapiversion标记:允许将单个api操作映射到任何版本(可以在v1的控制器中添加v3的方法);在上面控制器中添加以下代码,访问v3版本方法
c)注意事项:
1、路径中参数版本高于,其他方式设置版本
2、多种方式传递版本,只能采用一种方式传递版本号
3、swaggerui中maptoapiversion设置版本不会单独显示
二、swagger ui中版本接入
1、添加包:swashbuckle.aspnetcore、microsoft.aspnetcore.mvc.versioning.apiexplorer
2、修改startup代码:
3、运行效果:
其他:
示例地址:https://github.com/cwsheng/webapiversiondemo
到此这篇关于asp.net core webapi版本控制的实现的文章就介绍到这了,更多相关asp.net core webapi版本控制内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!