纸箱套袋机,f-15战斗机,招商信诺保单查询
其实,和swagger版本管理类似;只是平时接口太多;不好供前端人员进行筛选。
下面进入主题:
首先:
1 //注册swagger生成器,定义一个和多个swagger 文档 2 services.addswaggergen(c => 3 { 4 c.swaggerdoc("v1", new info 5 { 6 version = "v1", 7 title = "公共模块", 8 description = "接口说明(多模式管理,右上角切换)", 9 termsofservice = "", 10 contact = new contact { name = "fatefox", email = "476515159@qq.com" } 11 }); 12 c.swaggerdoc("gp", new info { title = "登录模块", version = "gp" }); 13 c.swaggerdoc("mom", new info { title = "业务模块", version = "yw" }); 14 c.swaggerdoc("dm", new info { title = "其他模块", version = "qt" }); 15 //设置要展示的接口 16 c.docinclusionpredicate((docname, apides) => 17 { 18 if (!apides.trygetmethodinfo(out methodinfo method)) 19 return false; 20 /*使用apiexplorersettingsattribute里面的groupname进行特性标识 21 * declaringtype只能获取controller上的特性 22 * 我们这里是想以action的特性为主 23 * */ 24 var version = method.declaringtype.getcustomattributes(true).oftype<apiexplorersettingsattribute>().select(m => m.groupname); 25 if (docname == "v1" && !version.any()) 26 return true; 27 //这里获取action的特性 28 var actionversion = method.getcustomattributes(true).oftype<apiexplorersettingsattribute>().select(m => m.groupname); 29 if (actionversion.any()) 30 return actionversion.any(v => v == docname); 31 return version.any(v => v == docname); 32 }); 33 //添加授权 34 c.addsecuritydefinition("bearer", new apikeyscheme 35 { 36 description = "请输入带有bearer开头的token", 37 name = "authorization", 38 in = "header", 39 type = "apikey" 40 }); 41 //认证方式,此方式为全局添加 42 c.addsecurityrequirement(new dictionary<string, ienumerable<string>> 43 { 44 { "bearer", enumerable.empty<string>() } 45 }); 46 //c.operationfilter<webuserapi.common.assignoperationvendorextensions>(); 47 //设置sjiggjson和ui的注释路径. 48 // 为 swagger json and ui设置xml文档注释路径 49 var basepath = path.getdirectoryname(typeof(program).assembly.location); 50 var xmlpath = path.combine(basepath, "webuserapi.xml"); 51 var xmlmodelpath = path.combine(basepath, "webuserapimdoel.xml");//添加model注释 52 c.includexmlcomments(xmlmodelpath); 53 c.includexmlcomments(xmlpath, true);//controller注释;必须放最后,否则后面的会覆盖前面的 54 });
然后设置ui:
// 添加swagger接口文档服务 app.useswagger(); //启用swaggerui样式 app.useswaggerui(c => { c.swaggerendpoint("/swagger/v1/swagger.json", "公共模块"); c.swaggerendpoint("/swagger/gp/swagger.json", "登录模块"); c.swaggerendpoint("/swagger/mom/swagger.json", "业务模块"); c.swaggerendpoint("/swagger/dm/swagger.json", "其他模块"); c.docexpansion(swashbuckle.aspnetcore.swaggerui.docexpansion.none); });
最后就是使用啦:
在controller或者action上打上
apiexplorersettings(groupname = "gp")
groupname根据自己的命名进行分组就可以了.
总的来说和设置apiversion类似,这里就不多介绍了
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论