netcorewebapi多版本控制与swagger(nswag)配置教程
|
副标题[/!--empirenews.page--]
首先希望webapi支持多版本,swagger针对不同的版本可进行交互。多版本控制基于Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer包,swagger可以选择Swashbuckle.AspNetCore和nswag.AspNetCore.由于我们系统使用的是nswag所以继续沿用,当然Swashbuckle.AspNetCore也和不错,有时间再总结。 版本控制 1.导入相关nuget。Swashbuckle.AspNetCore,nswag.AspNetCore. 2.添加api多版本控制服务 2.1.首先是让项目支持多版本的服务添加 services.AddApiVersioning(option => 服务我们已经注入了,下面我们看一下怎么webapi多版本的支持 2.1.1.多版本的控制 1.QueryString /// <summary> 当我们注册服务时不加 option.ApiVersionReader = new HeaderApiVersionReader("api-version");那么版本信息就是通过url?api-version=2进行传递2.header 2.header /// <summary> 如果不指定版本路由那么定义ApiVersionReader 则通过header传递 以上两种方式,默认版本(v1.0)均可不传递版本号 3.版本路由 /// <summary> 这种方式很直观,但如果原有项目没有使用多版本控制不建议用,可采用header的方式更为合理一些, 2.1.2同一个 Controller支持多版本 增加多个 [ApiVersion("2.0")]即可。 /// <summary> 但是两个相同的版本中Controller不能有相同的方法。比如v1文件夹和v2文件的UserController都指向v2版本,是不能同时拥有GetList()的,但是如果我们想要v2中的GetList重写v1的GetList方法,其他的方法都继承过来怎么处理呢? v1版本中的controller指定[ApiVersion("1.0")][ApiVersion("2.0")] /// <summary> v2版本中的controller指定[ApiVersion("2.0")] /// <summary> v1版本中的GetList()方法 MapToApiVersion到v1即可 /// <summary> 这样以来v1与v2中的GetList就互不影响了。 3.注册nswag(AddOpenApiDocument和AddSwaggerDocument) NSwag注入服务有两个方法:AddOpenApiDocument和AddSwaggerDocument,两者的区别就是架构类型不一样,AddOpenApiDocument的SchemaType使用的是OpenApi3,AddSwaggerDocument的SchemaType使用的是Swagger2: 我用的是AddSwaggerDocument (编辑:均轻资讯网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- iOS 11.2为iphone 8,iphone x释放apos;迅速apos;无线充电
- realme真我X50再曝新特性:五重立体冰封散热 100%覆盖核心热
- iPhone 12 Pro红色版概念设计亮相:复刻iPhone 5 多细节改动
- DxO纪录要破了?华为P40 Pro曝光:双大底CMOS+潜望式变焦
- 官宣:魅族Flyme 8.0完成28款新旧机型稳定版全发布
- 2020社交通讯app排行榜 你都用过吗?
- 小米10至尊纪念版DXO第一 雷军:这是小米打拼三年第二次登顶
- "非洲手机之王"传音科创板注册成功,拟融30亿元
- LG手机要重返中国大陆市场?新旗舰入网:或为G8X ThinQ
- 韩国法院驳回逮捕李在镕请求 检方称将继续调查


