实现步骤
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();