Swagger相关问题合集

415 阅读1分钟

Swagger相关问题合集

进行swagger配置时报错 Not Found http://localhost:5027/swagger/v1/swagger.json

配置代码

/// <summary>
/// API文档配置 配置Swagger
/// </summary>
/// <param name="services"></param>
/// <param name="configuration"></param>
/// <returns></returns>
public static IServiceCollection AddSwaggerExtension(this IServiceCollection services, IConfiguration configuration)
{

    services.AddSwaggerGen(options => 
    {
        options.SwaggerDoc("v0.0.1", new OpenApiInfo(){
            Title = $"流程管理系统API文档",
            Version = "v0.0.1",
            Description =$"基于ASP.NET8 + VUE3的前后分离流程管理系统API文档。"
        });

        // xml文档绝对路径
        var file = Path.Combine(AppContext.BaseDirectory, "BY.FusionHub.API.xml");
        // true: 显示控制器层注释
        options.IncludeXmlComments(file, true);
        // 对action的名称进行排序
        options.OrderActionsBy(o => o.RelativePath);

        // 添加安全定义--配置支持Token授权机制
        // 便于后续在Swagger中进行授权测试
        options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
        {
            Description = "请输入Token,格式为 Bearer xxxxxxx(注意中间必须有空格)",
            Name = "Authorization",
            In = ParameterLocation.Header,
            Type = SecuritySchemeType.ApiKey,
            BearerFormat = "JWT",
            Scheme = "Bearer"
        });

        // 添加安全要求
        options.AddSecurityRequirement(new OpenApiSecurityRequirement
        {
            {
                new OpenApiSecurityScheme
                {
                    Reference = new OpenApiReference()
                    {
                        Type = ReferenceType.SecurityScheme,
                        Id = "Bearer"

                    }
                },
                new string[] { }
            }
        });
    });
    return services; 
}

报错内容

err

因为这里的swagger默认是v1版本的,如果 options.SwaggerDoc("v0.0.1",new OpenApiInfo()) 中第一个参数不是 v1 就会报错。