.NET Core 使用swagger进行分组显示
程序员文章站
2022-04-09 09:42:51
其实,和swagger版本管理类似;只是平时接口太多;不好供前端人员进行筛选。 下面进入主题: 首先: 然后设置UI: 最后就是使用啦: 在controller或者action上打上 GroupName根据自己的命名进行分组就可以了. 总的来说和设置apiVersion类似,这里就不多介绍了 ......
其实,和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类似,这里就不多介绍了
下一篇: 一文搞懂HTTP协议及相关常见面试题
推荐阅读
-
Asp.Net Core使用SignalR进行服务间调用
-
使用Swagger服务搭建.Net Core API
-
asp.net core 3.0 中使用 swagger
-
Asp.Net Core WebAPI使用Swagger时API隐藏和分组详解
-
.NET CORE中使用AutoMapper进行对象映射的方法
-
Asp.net core WebApi 使用Swagger生成帮助页实例
-
Asp.Net Core WebAPI使用Swagger时API隐藏和分组详解
-
.NET CORE中使用AutoMapper进行对象映射的方法
-
ASP.NET Core 3.0 WebApi中使用Swagger生成API文档简介
-
Asp.net core WebApi 使用Swagger生成帮助页实例