惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
Help Net Security
Help Net Security
T
Tenable Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Privacy & Cybersecurity Law Blog
C
Cisco Blogs
A
Arctic Wolf
T
Threatpost
Simon Willison's Weblog
Simon Willison's Weblog
Spread Privacy
Spread Privacy
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News and Events Feed by Topic
SecWiki News
SecWiki News
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 聂微东
Scott Helme
Scott Helme
S
Securelist
AWS News Blog
AWS News Blog
Hacker News: Ask HN
Hacker News: Ask HN
美团技术团队
博客园 - 叶小钗
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
博客园_首页
H
Hacker News: Front Page
博客园 - 【当耐特】
J
Java Code Geeks
宝玉的分享
宝玉的分享
Jina AI
Jina AI
Webroot Blog
Webroot Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Cloudbric
Cloudbric
N
News and Events Feed by Topic
爱范儿
爱范儿
月光博客
月光博客
TaoSecurity Blog
TaoSecurity Blog
V
Visual Studio Blog
T
Troy Hunt's Blog
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
Hugging Face - Blog
Hugging Face - Blog
C
CERT Recently Published Vulnerability Notes
T
Tor Project blog
S
Secure Thoughts
L
LINUX DO - 热门话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - Franky
G
Google Developers Blog
Schneier on Security
Schneier on Security

博客园 - CreativeSpirit

VS2015卸载过程实录 C# Body为form-data file文件上传至第三方接口 VB.NET实现一键触发另一个窗体按钮点击事件的妙招 VB.net开发必备技能——两个窗体之间的数据传递方法! 掌握VB.net编程技巧,轻松打造Windows应用 TRUEmanager软件开发与维护指南 Oracle高级技巧:使用PIVOT函数和窗口函数解决只查询一条数据的问题 SQL Server 中的二进制转十进制函数编写 web录音——上传录音文件 CEF与JavaScript交互读取电脑信息 CefSharp.WinForms WPF开源框架项目 WPF入门教程系列四 2018年我的第一次年终总结 WPF入门教程系列三 c#串口开发WPF入门教程系列二 WPF入门教程系列一 C#串口通信程序实现无感知签到与答题 C# 调用adb command 读取手机型号和IMEI
.NET WebAPI 控制器巧用 GroupName,让 Swagger UI 分类呈现华丽升级
CreativeSpirit · 2024-03-08 · via 博客园 - CreativeSpirit

在日常开发 .NET WebAPI 项目时,Swagger 是一个不可或缺的工具,用于自动生成和展示 API 文档。然而随着 API 数量的增长,Swagger UI 中的接口列表可能会变得相当繁杂,这无疑增加了开发者理解和使用的难度。为了解决这一问题,我们可以利用 GroupName 这一特性来对 API 控制器进行分类和分组。

 第一步:进行swagger注册 找到Startup.cs 在类中添加

        public void ConfigureServices(IServiceCollection services)
        {

            services.AddControllers().AddNewtonsoftJson();//Microsoft.AspNetCore.Mvc.NewtonsoftJson
            services.AddOptions();
            #region Swagger  分组
            services.AddSwaggerGen(c =>
            {
                var data = Configuration.GetSection("SwaggerConfig").Get<List<SwaggerConfig>>();

                Configuration.GetSection("SwaggerConfig").Get<List<SwaggerConfig>>().ForEach(group =>
                {
                    c.SwaggerDoc(group.GroupName, new OpenApiInfo { Title = group.Title, Version = group.Version , Description="EDHR接口说明文档", Contact = new OpenApiContact { Name = "zhanping.zeng", Email = "zhanping.zeng@sinocare.com", } });
                });
                var xmlFileName = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                var modelsfile = Path.Combine(AppContext.BaseDirectory, "EDHR.Model.xml");
                var modelsphth = Path.Combine(AppContext.BaseDirectory, modelsfile);
                c.IncludeXmlComments(modelsphth, true);  //true:显示Models层注释
                c.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "Sino.MesEDHR.API.xml"), true);

            });
            #endregion

        }

第二步:在Startup中添加启用 swagger的代码

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseSwagger();
            }
            //启用中间件服务生成Swagger
            app.UseSwagger();
            #region Swagger 分组
            app.UseKnife4UI(c =>
            {
                c.RoutePrefix = string.Empty;
                Configuration.GetSection("SwaggerConfig").Get<List<SwaggerConfig>>().ForEach(group =>
                {
                    c.SwaggerEndpoint($"/swagger/{group.GroupName}/swagger.json", group.Title);  //分组显示
                });
            });
           #endregion

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }

 第三步:appsettings.json配置文件中添加

"SwaggerConfig": [
    {
      "GroupName": "SemiFinished",
      "Title": "半成本",
      "Version": "V1"
    },
    {
      "GroupName": "GoldBar",
      "Title": "金试条",
      "Version": "V1"
    },
    {
      "GroupName": "PackageRecords",
      "Title": "包材记录",
      "Version": "V1"

    },
    {
      "GroupName": "WeighingRecord",
      "Title": "称重记录",
      "Version": "V1"
    }

  ] 

最后就是对控制器进行分组标记的操作了

    [ApiExplorerSettings(GroupName = "GoldBar")]
    [Route("api/GoldBar")]
    [ApiController]
    public class GoldBarController : ControllerBase
    {
    
    } 

我们启动看下呈现

 项目控制器

 至此 .NET WebAPI 使用 GroupName 对 Controller 分组呈现 Swagger UI 就讲解完了,有任何不明白的,可以在文章下面评论或者私信我,欢迎大家积极的讨论交流