asp.net core webapi 完整Swagger配置

在当前项目下新建Utility文件夹,Utility文件夹下面在创建SwaggerExt文件夹,文档结果如下

 CustomSwaggerExt.cs文件如下

using Microsoft.Extensions.Options;
using Microsoft.OpenApi.Models;

namespace xxxxxxxxxx
{
    /// <summary>
    /// 扩展Swagger
    /// </summary>
    public static class CustomSwaggerExt
    {
        /// <summary>
        /// 配置Swagger
        /// </summary>
        /// <param name="builder"></param>
        public static void AddSwaggerExt(this WebApplicationBuilder builder)
        {
            builder.Services.AddEndpointsApiExplorer();
            builder.Services.AddSwaggerGen(option =>
            {
                typeof(ApiVersion).GetEnumNames().ToList().ForEach(version =>
                {
                    option.SwaggerDoc(version, new OpenApiInfo()
                    {
                        Title = "xxxxxxxx-Api服务",
                        Version = version,
                        Description = $"通过版本的coreApi版本{version}"
                    });
                });

                //读取根据api生成的控制器xml文件
                var file = Path.Combine(AppContext.BaseDirectory, "你的webapi解决方案名.xml");
                //显示控制器层注释
                option.IncludeXmlComments(file, true);
                //对action进行排序
                option.OrderActionsBy(r => r.RelativePath);


                option.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
                {
                    Description = "请输入token,格式为 【Bearer JWT字符串】(注意中间必须有空格)",
                    Name = "Authorization",
                    In = ParameterLocation.Header,
                    Type = SecuritySchemeType.ApiKey,
                    BearerFormat = "JWT",
                    Scheme = "Bearer"
                });
                //添加安全要求
                option.AddSecurityRequirement(new OpenApiSecurityRequirement()
                {
                    {
                        new OpenApiSecurityScheme{
                            Reference =new OpenApiReference{
                                Type = ReferenceType.SecurityScheme,
                                Id ="Bearer"
                            }
                        },new string[]{ }
                    }
                });
            });
        }
        /// <summary>
        /// 中间件生效
        /// </summary>
        public static void UseSwaggerExt(this WebApplication app)
        {
            app.UseSwagger();
            app.UseSwaggerUI(option =>
            {
                foreach (string version in typeof(ApiVersion).GetEnumNames().ToList())
                {
                    option.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"xxxx实战api第【{version}】版本");
                }
            });
        }
    }
}

ApiVersion.cs文件内容

namespace xxxxxxx
{
    public enum ApiVersion
    {
        V1,
        V2
    }
}

起启动文件Program.cs中使用

 

posted @ 2025-03-20 22:16  龙卷风吹毁停车场  阅读(36)  评论(0)    收藏  举报