.Net 在 Swagger 中添加自定义请求头或请求参数

.Net 在 Swagger 中添加自定义请求头或请求参数

zeee 275 2024-05-28

实现步骤

1. 定义一个 IOperationFilter 的实现

// AddCustomParamFilter.cs
internal class AddCustomParamFilter : IOperationFilter
{
    public void Apply(OpenApiOperation operation, OperationFilterContext context)
    {
        operation.Parameters.Add(new OpenApiParameter
        {
       	    // 字段名
            Name = "My-Header",
            // 字段位置: Header, Query, Path, Cookie 等
            In = ParameterLocation.Header,
            Required = false,
            Schema = new OpenApiSchema
            {
            	// 字段类型
                Type = "String",
                // 字段值
                Default = new OpenApiString("My-Value")
            }
        });
    }
}

3. 在 Swagger 注入自定义Filter

// Startup.cs Or Program.cs(MinimalApi)
services.AddSwaggerGen(options =>
{
	// ... 其他配置
    options.OperationFilter<AddCustomParamFilter>();
});

也可抽成单独的扩展方法

AddSwaggerGen 可以重复调用, 所以在大赏年度配置中可以单独配置Filter

// CustomParamFilterExtension
public static class CustomParamFilterExtension
{
    public static IServiceCollection AddCustomParam(this IServiceCollection services)
    {
        services.AddSwaggerGen(options =>
        {
            options.OperationFilter<AddCustomParamFilter>();
        });
        return services;
    }
}

在 Startup.cs 中的 ConfigureServices 方法或 Program.cs (MinimalApi) 可以直接做如下配置,更加简洁:

services.AddCustomParam();

# dotnet # swagger # asp.net