You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core配置Swagger UI添加ZUMO-API-VERSION请求头遇加载问题

正确配置Swagger UI添加ZUMO-API-VERSION请求头

你的问题出在SwaggerHeader类的错误配置上,导致Swagger无法正确生成请求头参数,进而请求卡住。以下是修正后的完整方案:

1. 修正SwaggerHeader过滤器实现

你的代码存在两个关键错误:

  • 请求头名称错误包含等号=,正确名称应为ZUMO-API-VERSION
  • 未指定参数位置为请求头(Header),Swagger默认会将参数当作Query参数处理,不符合接口要求

修正后的代码:

public class SwaggerHeader : IOperationFilter
{
    public void Apply(OpenApiOperation operation, OperationFilterContext context)
    {
        operation.Parameters ??= new List<OpenApiParameter>();

        operation.Parameters.Add(new OpenApiParameter
        {
            Name = "ZUMO-API-VERSION",
            In = ParameterLocation.Header, // 指定参数位置为请求头
            Description = "API版本号,固定值为3.0.0",
            Required = true,
            Schema = new OpenApiSchema
            {
                Type = "string",
                Default = new OpenApiString("3.0.0") // 设置默认值,Swagger UI自动填充
            }
        });
    }
}

2. 注册Swagger过滤器

在AddSwaggerGen中添加过滤器注册,确保Swagger生成文档时应用该配置:

builder.Services.AddSwaggerGen(c => {
    c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo()
    {
        Title = "Skillbased Middleware API Info",
        Version = "v1"
    });
    // 注册自定义请求头过滤器
    c.OperationFilter<SwaggerHeader>();
});

3. 保留原有Swagger中间件配置

你的中间件配置无需修改,保持如下即可:

var app = builder.Build();

app.UseSwagger();
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "Company API Testing v1");
});

完成配置后重启应用,Swagger UI的每个接口都会自动添加ZUMO-API-VERSION请求头输入框,且默认填充3.0.0,发起请求时会自动携带该请求头,即可正常调用接口。

内容的提问来源于stack exchange,提问作者inno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 23:52:49