武汉癫痫,铁观音属于红茶吗,侏儒大盗
services.addapiversioning((o) => { o.reportapiversions = true;//可选配置,设置为true时,header返回版本信息 o.defaultapiversion = new apiversion(1, 0);//默认版本,请求未指明版本的求默认认执行版本1.0的api o.assumedefaultversionwhenunspecified = true;//是否启用未指明版本api,指向默认版本 }).addversionedapiexplorer(option => { option.groupnameformat = "'v'vvvv";//api组名格式 option.assumedefaultversionwhenunspecified = true;//是否提供api版本服务 }).addswaggergen((s) => { //填充ui内容 var provider = services.buildserviceprovider().getrequiredservice<iapiversiondescriptionprovider>(); foreach (var description in provider.apiversiondescriptions) { s.swaggerdoc(description.groupname, new info() { title = $"体检微服务接口 v{description.apiversion}", version = description.apiversion.tostring(), description = "微服务框架-切换版本请点右上角版本切换", contact = new contact() { name = "荣少(黎更荣) wechat:186***** qq:157537648", email = "*******@hotmail.com" } } ); } //生成api xml文档 var basepath = platformservices.default.application.applicationbasepath; var xmlpath = path.combine(basepath, typeof(startup).gettypeinfo().assembly.getname().name + ".xml"); s.includexmlcomments(xmlpath); });
以上代码其中option.groupnameformat = "'v'vvvv";//api组名格式,各位可以尝试玩玩~~~~
在startup->configure方法中添加以下代码
app.useswagger().useswaggerui((o) => { foreach (var description in provider.apiversiondescriptions) { o.swaggerendpoint($"/swagger/{description.groupname}/swagger.json", description.groupname.toupperinvariant()); } });
其中在startup->configure方法中缺少了iapiversiondescriptionprovider provider参数,自己手动补上即可
//项目自动生成的版本 public void configure(iapplicationbuilder app, ihostingenvironment env) //参数补上后的版本 public void configure(iapplicationbuilder app, ihostingenvironment env, iapiversiondescriptionprovider provider)
以上配置基本上算时完成了,那么web api要怎么写法呢?
在webapi项目中controllers下建立v1、v2俩个文件夹
namespace webapplication1.controllers.v1 { [apiversion("1.0")] [route("api/v{version:apiversion}/[controller]")] [apicontroller] public class valuescontroller : controllerbase { [httpget] public actionresult<ienumerable<string>> get() { return new string[] { "v1", "v1" }; } } }
namespace webapplication1.controllers.v2 { [apiversion("2.0")] [route("api/v{version:apiversion}/[controller]")] [apicontroller] public class valuescontroller : controllerbase { [httpget] public actionresult<ienumerable<string>> get() { return new string[] { "v2", "v2" }; } } }
这里的路由设置了配置的标签{version:apiversion},其中apiversion中有各类的属性字段,例如:弃用(不代表停用,就好像巨硬上已经过时的方法)该版本api-apiversion("1.0", deprecated = true)],该[apiversionneutral
]标签就是表明停用,不需要该版本。
配置完成后,可以直接用url访问不同版本的接口地址:
https://localhost:44383/api/v1/values
https://localhost:44383/api/v2/values
最后的配置,因为项目默认启动的是api/values接口地址,需要修改项目properties->launchsettings.json
最终运行效果如下:
如果是对您有帮助,而您又比较慷概的请微信打赏下(后续会有更多的分享):
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论