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

在ASP.NET Core 6中使用FastEndpoints为Swagger请求添加自定义Header

解决Swagger添加自定义Header的方法

1. 全局配置两个Header(适用于所有接口)

在AddSwaggerDoc的配置逻辑中,补充全局参数定义和安全要求配置,让Swagger UI自动生成对应的输入项:

builder.Services.AddSwaggerDoc(settings =>
{
    settings.Title = "IPR Backend API";
    settings.Version = "v1";
    
    // 保留原有ApiKey认证配置
    settings.AddAuth("ApiKeyAuth", new()
    {
        Name = "ApiKey",
        In = NSwag.OpenApiSecurityApiKeyLocation.Header,
        Type = NSwag.OpenApiSecuritySchemeType.ApiKey,
    });

    // 添加全局CorrelationId Header参数
    settings.AddParameter(new NSwag.OpenApiParameter
    {
        Name = "CorrelationId",
        In = NSwag.OpenApiParameterLocation.Header,
        Required = true, // 根据实际业务需求设置是否必填
        Description = "请求关联ID,用于链路追踪"
    });

    // 启用全局ApiKey安全要求,让所有接口默认携带ApiKey
    settings.AddSecurityRequirement(new NSwag.OpenApiSecurityRequirement
    {
        {
            new NSwag.OpenApiSecuritySchemeReference { Id = "ApiKeyAuth" },
            Array.Empty<string>()
        }
    });
}, addJWTBearerAuth: false);

app.UseOpenApi();
app.UseSwaggerUi3(s => s.ConfigureDefaults());

2. 验证配置效果

启动项目打开Swagger UI后:

  • 点击右上角Authorize按钮,输入ApiKey的值提交,后续所有请求都会自动携带该Header。
  • 每个接口的请求参数区域会出现CorrelationId输入框,填入对应值即可发起测试请求。

3. 局部配置(仅部分接口需要CorrelationId)

如果CorrelationId不是所有接口都需要,可在对应FastEndpoints的请求模型中用[Header]标记参数,Swagger会自动识别生成输入项:

public class SampleEndpoint : Endpoint<SampleRequest>
{
    public override void Configure()
    {
        Post("/api/sample");
        AllowAnonymous();
    }

    public override async Task HandleAsync(SampleRequest req, CancellationToken ct)
    {
        // 业务逻辑处理
    }
}

public class SampleRequest
{
    [Header("CorrelationId")]
    public string CorrelationId { get; set; } = string.Empty;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 14:42:52