首页 > 编程语言 >Asp.Net Core WebApi使用Swagger分组展示接口

Asp.Net Core WebApi使用Swagger分组展示接口

时间:2024-04-12 11:37:21浏览次数:28  
标签:WebApi Core Asp 接口 GroupName 添加 var new swagger

先通过Nuget包管理器安装Swashbuckle.AspNetCore包,然后修改Startup.cs的ConfigureServices方法:

复制代码
       services.AddSwaggerGen(c =>
            {
                // 添加swagger文档
                c.SwaggerDoc("system", new OpenApiInfo()
                {
                    Title = "系统模块",
                    Version = "v1",
                    Description = "接口说明(多模式管理,右上角切换)"
                });
                c.SwaggerDoc("member", new OpenApiInfo()
                {
                    Title = "会员模块",
                    Version = "v1"
                });
                // 设置要展示的接口
                c.DocInclusionPredicate((docName, apiDes) =>
                {
                    if (!apiDes.TryGetMethodInfo(out MethodInfo method))
                        return false;
                    /* 使用ApiExplorerSettingsAttribute里面的GroupName进行特性标识
                     * DeclaringType只能获取controller上的特性
                     * 我们这里是想以action的特性为主
                     */
                    var actionGroup = method.GetCustomAttributes(true).OfType<ApiExplorerSettingsAttribute>().Select(m => m.GroupName);
                    if (actionGroup.Any())
                    {
                        return actionGroup.Any(v => v == docName);
                    }
                    var controllerGroup = method.DeclaringType.GetCustomAttributes(true).OfType<ApiExplorerSettingsAttribute>().Select(m => m.GroupName);
                    return controllerGroup.Any(v => v == docName);
                });
                // 添加授权
                c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
                {
                    Description = "请输入带有Bearer开头的Token",
                    Name = "Authorization",
                    In = ParameterLocation.Header,
                    Type = SecuritySchemeType.ApiKey
                });
                // 认证方式,此方式为全局添加
                c.AddSecurityRequirement(new OpenApiSecurityRequirement()
                {
                    {
                        new OpenApiSecurityScheme
                        {
                            Reference = new OpenApiReference
                            {
                                Type = ReferenceType.SecurityScheme,
                                Id = "Bearer"
                            }
                        },
                        new string[] {}
                    }
                });
                // 添加Xml说明文件
                var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
                var xmlFileName = AppDomain.CurrentDomain.FriendlyName + ".xml";
                var xmlFilePath = Path.Combine(baseDirectory, xmlFileName);
                if (File.Exists(xmlFilePath))
                {
                    c.IncludeXmlComments(xmlFilePath);
                }
            });
复制代码

在Configure方法中进行配置:

复制代码
            // 添加Swagger接口文档服务
            app.UseSwagger();
            // 启用SwaggerUI样式
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/system/swagger.json", "系统模块");
                c.SwaggerEndpoint("/swagger/member/swagger.json", "会员模块");
            });
复制代码

在controller或者action上加上ApiExplorerSettings,GroupName根据自己的命名进行分组就可以了

ApiExplorerSettings(GroupName = "分组名称")

启动WebApi后,在路径swagger下查看接口文档

标签:WebApi,Core,Asp,接口,GroupName,添加,var,new,swagger
From: https://www.cnblogs.com/ILoveJackSparrow/p/18130794

相关文章

  • server2008安装.netcore api
    一、先写个简单点的.netcoreapi1publicclassProgram2{3publicstaticvoidMain(string[]args)4{5varbuilder=WebApplication.CreateBuilder(args);67//Addservicestothecontainer.89......
  • 树莓派(Raspberry Pi OS)操作系统的选择
    树莓派官方下载:https://www.raspberrypi.com/software/  第一个版本:RaspberryPiOSwithdesktopandrecommendedsoftware带图形化桌面系统和常用的推荐软件的版本。 第二个版本:RaspberryPiOSwithdesktop带图形化桌面系统,但没有常用的推荐软件,内存占用较小。......
  • Asp .Net Core 系列:集成 Refit 和 RestEase 声明式 HTTP 客户端库
    背景.NET中有没有类似Java中Feign这样的框架?经过查找和实验,发现在.NET平台上,虽然没有直接的Feign框架的端口,但是有一些类似的框架和库,它们提供了类似的功能和设计理念。下面是一些在.NET中用于声明式HTTP客户端的框架和库:Refit:Refit是一个用于构建声明式、类......
  • 第五节:框架版本打升级(CoreMvc8.x + EFCore8.x)
    一.基础升级1. 版本升级  将各个类库、项目都升级为.Net8.0  2.AutoFac升级  【AutoFac6.4.0】升级到 【8.0.0】  【Autofac.Extensions.Depend8.0.0】升级到 【9.0.0】 3.基本库升级  【System.Text.Json7.0.2】升级到【8.0.3】  ......
  • 52 Things: Number 2: What is the difference between a multi-core processor and a
    52Things:Number2:Whatisthedifferencebetweenamulti-coreprocessorandavectorprocessor?52件事:数字2:多核处理器和矢量处理器有什么区别?Onthefaceofit,youmaybeconfusedastowhatthedifferenceisbetweenthesetwoprocessors.Afterall,yo......
  • ASP.NET Core 依赖注入中的Scope
    每个请求是一个Scope为什么不能直接从RootScope中Resolve实例,会造成内存泄漏,原因是RootScope不会Dispose,长命持有短命问题注意CreateScope()Scope的范围Refhttps://andrewlock.net/the-dangers-and-gotchas-of-using-scoped-services-when-configuring-options-in-asp-n......
  • ASP.NET--Request(请求)对象概述
    概述:Request对象用于检索从浏览器向服务器发送的请求中的信息。它提供对当前页请求的访问,包括标题、Cookie、客户端证书,查询字符串等,与HTTP协议的请求信息相对应。同样,假如将用户请求服务器的过程比喻成客户到柜台买商品的过程,那么客户向享受原描述要购买商品(如颜色,大小,功能......
  • CDR2024破解序列号Crack免费下载最新CorelDraw2024安装包
    CorelDRAW是一款功能强大的矢量图形制作和排版软件,主要面向绘图设计师和印刷输出人员。它提供了一整套的绘图工具,包括圆形、矩形、多边形、方格、螺旋线等,并配合塑形工具,可以对各种基本图形作出更多的变化,如圆角矩形,弧、扇形、星形等。同时,CorelDRAW还提供了无缝的图形、版面、......
  • PageOffice6最简集成代码(.NetCore)
    本文描述了PageOffice产品在.NetCore项目中如何集成调用。新建.NetCore项目:PageOffice6-Net-Core-Simple在此项目的“依赖项-包-管理NuGet程序包”中搜索到“Zhuozhengsoft.PageOffice"程序后安装最新版本。下载PageOffice客户端安装程序。windows客户端安装程序:posetup_6.......
  • 记录一个springcloud-task-core.jar导致CommandLineRunner @order排序失效的问题
    项目中编写了几个CommandLineRunner,并且加上了spring的@order注解,期望在启动时会按顺序执行(从order的value小到大执行),但是实际使用发现排序不生效于是进行debug,CommandLineRunner类的排序是在SpringApplication.class的callRunners方法privatevoidcallRunners(ApplicationCon......