首页 > 其他分享 >盘点一下在swagger中一些有用且经常忽略的属性

盘点一下在swagger中一些有用且经常忽略的属性

时间:2024-01-17 11:14:42浏览次数:28  
标签:API Swagger 忽略 JSON 盘点 文档 swagger options

震惊!,这些Swagger的属性你都了解吗?

盘点一下在swagger中一些有用且经常忽略的属性

启用永久授权EnablePersistAuthorization

                app.UseSwaggerUI(c =>
                {
                    //指定Swagger JSON文件的终结点,用于加载和显示API文档。
                    //需要提供JSON文件的URL和一个可识别的名称
                    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
                   
                    //启用永久授权
                    c.EnablePersistAuthorization(); 
                });

启用后,在登陆的小锁输入token之后,就可以 避免每次重新调试,再次输入token的问题,原理是swagger里面调用js代码来实现每次自动登录的

控制器XML注释

在实现xml注入的时候, options.IncludeXmlComments(xml,true); ,第二个属性控制是否为控控制器添加注释

    public static class SwaggerSetup
    {
        public static IServiceCollection AddSwaggerSetup(this IServiceCollection services)
        { 

            // 默认配置
            Action<SwaggerGenOptions> defaultSetupAction = options =>
            {
                var basePath = AppContext.BaseDirectory;

                options.SwaggerDoc("v1",
                    new OpenApiInfo
                    {
                        Title = "在线接口文档",
                        Version = "v1"
                    });

                // 获取根目录下,所有 xml 完整路径(注:并不会获取二级目录下的文件)
                var directoryInfo = new DirectoryInfo(basePath);
                List<string> xmls = directoryInfo
                    .GetFiles()
                    .Where(f => f.Name.ToLower().EndsWith(".xml"))
                    .Select(f => f.FullName)
                    .ToList();

                // 添加注释文档
                foreach (var xml in xmls)
                {
                    options.IncludeXmlComments(xml,true);
                }

                //tode 将默认扩展状态设置为 "none"  

                // 开启加权小锁
                //options.OperationFilter<AuthenticationOperationFilter>();

                // 开启加权小锁
                //用于在 Swagger UI 的每个操作中添加 x-auth-token 响应头,以便在调用 API 后显示 token
                //options.OperationFilter<AddResponseHeadersFilter>();
                ////用于将 "Authorize" 字符串添加到 Swagger UI 中每个操作的标题中,提醒用户该操作需要认证/授权才能访问
                //options.OperationFilter<AppendAuthorizeToSummaryOperationFilter>();

                //// 在 Swagger UI 的每个操作中添加一个 "Authorization" 按钮,并将认证令牌包含在请求头中
                //options.OperationFilter<SecurityRequirementsOperationFilter>();

                // 接入 Jwt 认证
                //options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
                {
                    Scheme = "Bearer",
                    BearerFormat = "JWT",
                    Description = "在下面输入框输入Token",
                    Name = "Authorization",
                    In = ParameterLocation.Header,
                    Type = SecuritySchemeType.Http
                });


            };

            // 注册 Swagger 并添加默认配置
            services.AddSwaggerGen(defaultSetupAction);

            // 如果有自定义配置
            //if (setupAction != null) services.Configure(setupAction);

            return services;
        }

    }

控制Try It Out请求的请求持续时间(以毫秒为单位)的显示

                app.UseSwaggerUI(c =>
                {
                    //指定Swagger JSON文件的终结点,用于加载和显示API文档。
                    //需要提供JSON文件的URL和一个可识别的名称
                    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
                    
                   //控制Try It Out请求的请求持续时间(以毫秒为单位)的显示
                    c.DisplayRequestDuration();
                });

swagger ui的路由

                app.UseSwaggerUI(c =>
                {
                    //指定Swagger JSON文件的终结点,用于加载和显示API文档。
                    //需要提供JSON文件的URL和一个可识别的名称
                    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
                    
                   //指定swagger文档的启动目录 。默认为swagger
                   //可以通过设置为空字符串来让Swagger UI直接在根路径下进行访问
                   //c.RoutePrefix = string.Empty;

                });

文档展开的方式

   //设置默认的接口文档展开方式,可选值包括None、List和Full。
   //默认值为None,表示不展开接口文档;
   //List表示只展开接口列表;
   //Full表示展开所有接口详情
   c.DocExpansion(DocExpansion.None); // 设置为完整模式 
   c.DisplayRequestDuration();
   c.EnablePersistAuthorization();

标签:API,Swagger,忽略,JSON,盘点,文档,swagger,options
From: https://www.cnblogs.com/netcore5/p/17969357

相关文章

  • Mysql8忽略大小写的解决方案
    一、删除服务器数据文件由于8.0没法设置参数后重启(失败),所以必须删掉老库,重新启动才行。切记:;本步骤要删掉老库所有资料,如果是数据库当前有用,请做好备份,再进行操作。systemctlstopmysqldcd/var/lib/mysql默认数据在这里rm-rf*二、添加配置,大小写不敏感vim/etc/my.cnflow......
  • Django 使用swagger自定义自动生成类
    完整代码:https://gitee.com/mom925/django-system之前写的Django配置swagger(https://www.cnblogs.com/moon3496694/p/17657283.html)其实更多还是自己手动的写代码去书写接口文档,我希望它能更加的自动化生成出接口文档,所以我需要自己重写一些函数。安装所需的包,注册app,注册路由参考......
  • DevEco中被忽略的实用功能
    近期,我一直在业余时间研究纯血鸿蒙(HarmonyOS)App的开发,所使用的IDE是华为官方的DevEcoStudio3.1.1。随着使用时间的增长,我发现了几个特别容易被忽略,但又特别实用的功能,今天列举三个分享给大家。这三个实用功能在日常开发中的使用频率非常频繁,如果善加利用,将会极大地加速开发进程......
  • # yyds干货盘点 # 盘点一个Python发票识别报错问题的处理案例
    大家好,我是皮皮。一、前言前几天在Python免费交流群【PJW】问了一个Python发票识别报错的问题,下图是他的报错截图,但是他自己看不出来哪里有问题,百度方面其实一问应该也有答案的,可是他就是有些找不到,然后找群里的好心人求助。后来【果冻和布丁】有GPT,找他帮忙问了一圈。二、实现过程......
  • 盘点Gateway-Worker启动的九种报错和解决方法
    Workerman是一款开源高性能异步PHPsocket即时通讯框架。支持高并发,超高稳定性,被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步Mys......
  • 盘点一个Python发票识别报错问题的处理案例
    大家好,我是皮皮。一、前言前几天在Python免费交流群【PJW】问了一个Python发票识别报错的问题,下图是他的报错截图,但是他自己看不出来哪里有问题,百度方面其实一问应该也有答案的,可是他就是有些找不到,然后找群里的好心人求助。后来【果冻和布丁】有GPT,找他帮忙问了一圈。二、实......
  • openfeign 忽略ssl证书 亲测有效
    请求https接口异常Causedby:javax.net.ssl.SSLHandshakeException:PKIXpathbuildingfailed:sun.security.provider.certpath.SunCertPathBuilderException:unabletofindvalidcertificationpathtorequestedtarget atjava.base/sun.security.ssl.Alert.createSSL......
  • #yyds干货盘点# LeetCode程序员面试金典:移除盒子
    题目给出一些不同颜色的盒子boxes,盒子的颜色由不同的正数表示。你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止。每一轮你可以移除具有相同颜色的连续k个盒子(k>=1),这样一轮之后你将得到k*k个积分。返回你能获得的最大积分和。 示例1:输入:boxes=[1,3,2,......
  • #yyds干货盘点# LeetCode程序员面试金典:整数替换
    题目给定一个正整数n,你可以做如下操作:如果n是偶数,则用n/2替换n。如果n是奇数,则可以用n+1或n-1替换n。返回n变为1所需的最小替换次数。 示例1:输入:n=8输出:3解释:8->4->2->1示例2:输入:n=7输出:4解释:7->8->4->2->1或7->6-......
  • # yyds干货盘点 # 盘点一个AI解答疑难代码的问题
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas代码解读的问题,问题如下:df_in=df[df['入/出'].eq('入')],我也不懂eq啥意思?感觉这代码还可以写成df[df['入/出']=='入'],这两段一个意思吧。答:eq就是=,就是你说的这个。二、实现过程后来【论草莓如......