在避免swagger接口过多时,可以使用分组进行功能区分

简单三部曲

1、添加分组和级别名称

    services.AddSwaggerGen(c =>
{
#region swagger分组
c.SwaggerDoc("v1", new OpenApiInfo
{
Version = "v1",
Title = "公共模块",
Description = "接口说明(多模式管理,右上角切换)",
});
c.SwaggerDoc("khgl", new OpenApiInfo { Title = "客户管理", Version = "khgl" });
c.SwaggerDoc("htgl", new OpenApiInfo { Title = "合同管理", Version = "htgl" });
c.SwaggerDoc("yygl", new OpenApiInfo { Title = "运营管理", Version = "yygl" });
c.SwaggerDoc("jxgl", new OpenApiInfo { Title = "绩效管理", Version = "jxgl" });
c.SwaggerDoc("kqgl", new OpenApiInfo { Title = "考勤管理", Version = "kqgl" });
c.SwaggerDoc("ldjsc", new OpenApiInfo { Title = "领导驾驶舱", Version = "ldjsc" });
c.SwaggerDoc("xtgl", new OpenApiInfo { Title = "系统管理", Version = "xtgl" });
c.SwaggerDoc("sbgl", new OpenApiInfo { Title = "设备管理", Version = "sbgl" });
c.SwaggerDoc("excel", new OpenApiInfo { Title = "文件下载", Version = "excel" });
//设置要展示的接口
c.DocInclusionPredicate((docName, apiDes) =>
{
if (!apiDes.TryGetMethodInfo(out MethodInfo method))
return false;
/*使用ApiExplorerSettingsAttribute里面的GroupName进行特性标识
* DeclaringType只能获取controller上的特性
* 我们这里是想以action的特性为主
* */
var version = method.DeclaringType.GetCustomAttributes(true).OfType<ApiExplorerSettingsAttribute>().Select(m => m.GroupName);
if (docName == "v1" && !version.Any())
return true;
//这里获取action的特性
var actionVersion = method.GetCustomAttributes(true).OfType<ApiExplorerSettingsAttribute>().Select(m => m.GroupName);
if (actionVersion.Any())
return actionVersion.Any(v => v == docName);
return version.Any(v => v == docName);
}); #endregion

2、

 // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwagger();
//以下为关键代码
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "公共模块");
c.SwaggerEndpoint("/swagger/khgl/swagger.json", "客户管理");
c.SwaggerEndpoint("/swagger/htgl/swagger.json", "合同管理");
c.SwaggerEndpoint("/swagger/yygl/swagger.json", "运营管理");
c.SwaggerEndpoint("/swagger/jxgl/swagger.json", "绩效管理");
c.SwaggerEndpoint("/swagger/kqgl/swagger.json", "考勤管理");
c.SwaggerEndpoint("/swagger/ldjsc/swagger.json", "领导驾驶舱");
c.SwaggerEndpoint("/swagger/xtsz/swagger.json", "系统设置");
c.SwaggerEndpoint("/swagger/sbgl/swagger.json", "设备管理");
c.SwaggerEndpoint("/swagger/excel/swagger.json", "文件下载"); c.DocExpansion(Swashbuckle.AspNetCore.SwaggerUI.DocExpansion.None);
});
}

3、控制器使用

[Route("api/[controller]/[action]")]

//使用
[ApiExplorerSettings(GroupName = "jxgl")]

最新文章

  1. lua52 C API测试代码
  2. hdu 2037 今年暑假不AC
  3. Fastest Wordpress Theme -wpfast Download
  4. mysql的隐式转化
  5. 前端利器:SASS基础与Compass入门
  6. Xamarin.Android开发实践(八)
  7. Commons-Beanutils包详解
  8. 选错实施顾问公司 ERP项目九死一生
  9. 数据生成器Bogus的使用以及基于声明的扩展
  10. poj3301 三分
  11. SP_CreateInsertScript 将表内的数据全部拼接成INSERT字符串输出
  12. 常用的Tensor操作
  13. 浅析HashMap的实现原理
  14. 剑指offer 6.查找和排序 旋转数组的最小数字
  15. CST时区,MYSQL与JAVA-WEB服务器时间相差13个小时的问题
  16. Raspbian开启root账户
  17. docker中,如何将镜像保存为tar文件或者将镜像保存为文件,将tar文件导入到docker中
  18. 关于hover的一个问题记录
  19. 000 Html基本标签与案例
  20. JPA实体关系映射:@ManyToMany多对多关系、@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析

热门文章

  1. Linux文件常用操作命令
  2. vscode安装教程(含插件配置)
  3. The Missing Semester - 第一讲 学习笔记
  4. 关于联想对Jim博士的质疑
  5. Xlight安装与使用
  6. 分布式共识算法随笔 —— 从 Quorum 到 Paxos
  7. 推荐系统[二]:召回算法超详细讲解[召回模型演化过程、召回模型主流常见算法(DeepMF_TDM_Airbnb Embedding_Item2vec等)、召回路径简介、多路召回融合]
  8. Loadrunner性能测试简记
  9. 题解 [ZJOI2007]棋盘制作
  10. element-ui/lib/style.css in ./src/main.js 解决方案