首页 > 其他分享 >.NET WebAPI 控制器巧用 GroupName,让 Swagger UI 分类呈现华丽升级

.NET WebAPI 控制器巧用 GroupName,让 Swagger UI 分类呈现华丽升级

时间:2024-03-08 11:55:48浏览次数:27  
标签:WebAPI group Title app GroupName Version UI Swagger

在日常开发 .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 = "[email protected]", } });
                });
                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 就讲解完了,有任何不明白的,可以在文章下面评论或者私信我,欢迎大家积极的讨论交流

 

  

 

标签:WebAPI,group,Title,app,GroupName,Version,UI,Swagger
From: https://www.cnblogs.com/zengzhanping/p/18060558

相关文章

  • c# webapi 禁用单个方法(Action)与整个控制器(Controller)
      在C#中,如果你想要禁用WebAPIController下的所有方法,你可以通过在Controller上应用特定的Attribute来实现。这里有两种常见的方法来禁用所有Controller的方法:使用[NonAction]属性:这个属性可以被应用到单个的Action方法上,以指示该方法不作为Action处理。但是,如果你想禁......
  • SOUI2-布局系统
    布局系统每个UI界面都是由大量的界面元素构成的,在window编程中,这些界面元素的最小单位被称为控件,而布局则是这些控件在界面的相对位置和大小。目前SOUI支持锚点布局、线性布局、网格布局,下面会依次介绍这几种布局方式。锚点布局所谓锚点布局,是定义了一个控件的坐标位置,这个位......
  • Qt开发,报错:Error while building/deploying project untitled (kit: ....)
    1、问题描述 Qt开发,编译时,报错如下:1Cannotfindfile:F:\linux\...\Console.pro.213:49:47:进程"D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\qmake.exe"退出,退出代码2。3Errorwhilebuilding/deployingprojectConsole(kit:DesktopQt5.14.2MSVC201764bit)4......
  • 基于arduino IDE 部署ESP32 ESP8266开发环境
    本文涉及技术:arduinoIDE环境,windows10系统软件,开发环境配置,单片机新手入门;关于arduino程序学习与相关教程,可以前往Arduino中文社区Arduino教程汇总贴arduino1.8.9arduinoIDE是一个很棒的集成开发环境,自带有开发版环境管理,函数库管理,一键编译、下载;串口调试的功能,代码格......
  • m基于深度学习网络的瓜果种类识别系统matlab仿真,带GUI界面
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要       GoogleNet,又名Inception网络,是Google公司研发的一种深度学习模型,其通过增加网络深度和宽度来提升性能,同时采用了一些创新性的技术来减少计算量和参数数量。GoogleNet的核心思想是通......
  • 内部UI自动化测试培训之unittest基础
    这个文档的由来是公司内部UI自动化测试培训的资料。部门为了减少测试工作量,准备做UI自动化测试。我写python,其他同事都是java,所以python基础和UI自动化测试selenium的培训就由我来完成。本篇是单元测试工具uniitest的基础介绍。UI自动化测试相关内容:内部UI自动化测试培训之什......
  • 内部UI自动化测试培训之什么是UI自动化测试
    UI自动化测试相关内容:内部UI自动化测试培训之什么是UI自动化测试内部UI自动化测试培训之python基础内部UI自动化测试培训之unittest基础内部UI自动化测试培训之seleniumUI测试工具概念介绍自动化测试最初由麦克科恩(MikeCohn)(敏捷开发的创始人之一)在他的著作《Succ......
  • 内部UI自动化测试培训之python基础
    这个文档的由来是公司内部UI自动化测试培训的资料。部门为了减少测试工作量,准备做UI自动化测试。我写python,其他同事都是java,所以python基础和UI自动化测试selenium的培训就由我来完成。完整教程包括4篇内容,本篇是python的基础内容,高手请跳过。虽然是基础,但是可以看做是一个pyth......
  • 34. 增加力量牌及 UI
    本节目标实现一张力量牌,使用了它之后玩家两个回合的输出增加50%代码实现增加StrengthEffect力量效果如果是对自己使用的话,就会提高攻击。如果是对敌人使用的话,就会降低攻击增加EnemyStrengthRound增加BuffStrengthEffect力量拳套使用BuffStrengthEffectUI增加......
  • WPF(.netCore) 嵌入WebApi服务
    1从NUGET添加组件“Swashbuckle.AspNetCore”相关使用代码varbuilder=WebApplication.CreateBuilder();builder.Services.AddControllers();varapp=builder.Build();app.UseHttpsRedirection();a......