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 (编辑:常州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 3月30日发布!荣耀30S真机首次公开:蝶羽元素加持 颜值在线
- 三星Galaxy S10、Note10系列 双十二最高优惠2700元
- 三星Galaxy Note 10+/S20 Ultra底部边框对比:S20 Ultra略窄
- 手机套餐中的 话术陷阱 不该成为用户之痛
- 取代短信 抢攻微信市场 华为抱团开发5G杀手锏
- 120Hz 2K屏+骁龙865 一加8系列新机海外发布售价699美元起
- 5G商用落地样板间未达预期 URLLC如何带头提前进入5.5G时代?
- 约单是什么样的网站? 约单是干嘛的?
- 三星Exynos 2100芯片曝光:CPU频率超骁龙875还能更省电
- 高通表示手机连接的5G VR/AR头显仍有望在2020年推出