关于.NET CORE 的 swagger 分组简单使用
在避免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")]
关于.NET CORE 的 swagger 分组简单使用的更多相关文章
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
C#中缓存的使用 缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可: <%@ Outp ...
- asp .net core中swagger的简单使用
相信swagger大家不太陌生,简单来说就是把web api接口以ui的形式呈现到页面上,供方便调用和展示.这边文章就带大家初步简单使用swagger. (1)首先需要安装包:Swashbuckle. ...
- 【dotNet Core】Swagger下简单的给WebApi分组
Startup.cs下ConfigureServices代码 这里主要在DocInclusionPredicate控制输出那些api. Startup.cs下Configure代码 给Controll ...
- .net core api +swagger(一个简单的入门demo 使用codefirst+mysql)
前言: 自从.net core问世之后,就一直想了解.但是由于比较懒惰只是断断续续了解一点.近段时间工作不是太忙碌,所以偷闲写下自己学习过程.慢慢了解.net core 等这些基础方面学会之后再用.n ...
- Asp.net Core的Swagger接口根据模块、版本分组
近期一直在学习Asp.net Core,微软的文档太难看,都是英文翻译过来的,很不友好,感谢这个博客,从壹开始前后端分离[ .NET Core2.0 +Vue2.0 ],让我入门了,刚学到这个Swag ...
- .Net core 使用swagger进行Api管理
上次我们讲过如何在swagger上隐藏接口,众所周知,swagger是一个强大的api文档工具,可以帮助我们记录文档并且测试接口,也是一个可视化操作接口的工具. 那么如果我们写的接口非常多的时候怎么办 ...
- .net core的Swagger接口文档使用教程(二):NSwag
上一篇介绍了Swashbuckle ,地址:.net core的Swagger接口文档使用教程(一):Swashbuckle 讲的东西还挺多,怎奈微软还推荐了一个NSwag,那就继续写吧! 但是和Sw ...
- [.Net Core] 在 Mvc 中简单使用日志组件
在 Mvc 中简单使用日志组件 基于 .Net Core 2.0,本文只是蜻蜓点水,并非深入浅出. 目录 使用内置的日志组件 简单过渡到第三方组件 - NLog 使用内置的日志 下面使用控制器 Hom ...
- .NET Core和Swagger 生成 Api 文档
测试/生产环境的BUG 这里更新一下在本地调试正常,在INT/PROD上抛错,错误信息为: */**/*.xml(Swagger json file) 文件找不到,在startup 里builder ...
- .NET Core和Swagger 生成 Api 文档转
阅读目录 1.引用 2.打开startup.cs文件 3.设置XML注释 4.运行结果 5.主要问题的解决办法 6.可以自定义UI 前言 最近写了好多Web api, 老大说太乱了,要整理一下,使用S ...
随机推荐
- 06yarn简介
YARN简介 一.YARN是什么 YARN不是facebook的那个yarn,它从Hadoop 2引入,最初目的是改善MapReduce的实现,但是因为具备足够通用性,同样也可以支持其他的分布式计算模 ...
- IIS重定向HTTP至HTTPS
一.安装URL重写模块,自行百度下载 二.选择网站进行添加规则 三.总结 其实就是在站点的Web.config增加了一段配置: <system.webServer> <rewrite ...
- JZOJ 2022.02.26【提高A组】模拟
比赛总结 考场 \(T1,T2\) 思想切了 然而... \(\text{T1}\) 飞行棋 当然要 \(dp\),然而发现后六格有后效性 姑且设 \(f_i\) 表示从第 \(i\) 格到终点的期望 ...
- 一文详解ATK Loss论文复现与代码实战
摘要:该方法的主要思想是使用数值较大的排在前面的梯度进行反向传播,可以认为是一种在线难例挖掘方法,该方法使模型讲注意力放在较难学习的样本上,以此让模型产生更好的效果. 本文分享自华为云社区<AT ...
- Java 文本检索神器 "正则表达式"
Java 文本检索神器 "正则表达式" 每博一文案 在我们短促而又漫长的一生中,我们在苦苦地寻找人生的幸福,可幸福往往又与我们失之交臂, 当我们为此而耗尽宝贵的.青春年华,皱纹也悄 ...
- OpenLayers集成ECharts
1. 引言 OpenLayers是WebGIS中常用的开源JavaScript前端库,ECharts是常用的可视化开源JavaScript前端库 OpenLayers官网:OpenLayers - W ...
- Educational Codeforces Round 137 (Rated for Div. 2) - E. FTL
DP Problem - E - Codeforces 题意 有个 BOSS 有 \(H\;(1<=H<=5000)\) 血量,\(s\) 点防御 有两种武器可用攻击 BOSS,伤害分别为 ...
- ASP.net EF动态映射实体
1.配置EF与建立实体模型这里不做过多介绍.主要介绍如何动态映射实体模型 1.1.实现过程有很多种方式我们这里使用接口.然后扫描所有继承了该接口的实体类然后映射(也可以自行扩展使用特性) 首先我们新建 ...
- AttributeError: module 'openai' has no attribute 'ChatCompletion'的解决办法
原因 openai库版本过旧 解决办法(二选一) pip install -U openai 下载安装包放入你的项目根目录下, 改名格式zip为whl(即:openai-0.27.0-py3-none ...
- vue 2 中防抖节流在当前页面里写
isfilter(val) { // 过滤 this.debounce(() => { this.init(val); }, 1000); ...