• Asp.Net Core WebApi使用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下查看接口文档

  • 相关阅读:
    Anaconda(4.8.3)(Anaconda3-2020.02-Windows-x86_64)安装日志和启动问题排查日志
    abp学习日志九(总结)
    abp学习日志八(多租户)
    abp学习日志六(模块化开发)
    abp学习日志七(动态API)
    abp学习日志五(领域服务)
    abp学习日志四(仓储)
    ug主菜单men文件按书写格式,这样写有利单个dll调用
    NX开发,blockUI窗口调用blockUI窗口
    VS2013快捷键大全
  • 原文地址:https://www.cnblogs.com/lgyup/p/16248888.html
Copyright © 2020-2023  润新知