Web Api如何在Swagger中为所有API添加Header参数

我搜索了可能的方法来添加一个请求头参数,该参数将自动添加到我的web-api每个方法,但我找不到一个明确的方法。

在搜索时我发现方法OperationFilter()必须对它做一些事情。

是的,您可以通过inheritanceIOperationFilter

你可以在github上找到答案: AddRequiredHeaderParameter

  public class AddRequiredHeaderParameter : IOperationFilter { public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription) { if (operation.parameters == null) operation.parameters = new List(); operation.parameters.Add(new Parameter { name = "X-User-Token", @in = "header", type = "string", required = false }); } } 

然后转到SwaggerConfig.cs文件并在EnableSwagger部分添加以下内容:

  c.OperationFilter(() => new AddRequiredHeaderParameter()); 

重建,享受。

我不得不这样做有点不同,不知道为什么。 这是我添加标头值所做的:

这被添加到我的swagger配置中:

  c.OperationFilter(); 

这是class级:

  public class AddRequiredHeaderParameter : IOperationFilter { public void Apply(Operation operation, OperationFilterContext context) { operation.Parameters.Add(new NonBodyParameter { Name = "X-MYHEADER", In = "header", Type = "string", Required = false }); } } 

您也可以使用基本模型类,并使用属性[FromHeader]来获取应在自定义标头中发送的属性。 像这样的东西:

 public class AuthenticatedRequest { [FromHeader(Name = "User-Identity")] public string UserIdentity { get; set; } } 

至少它适用于ASP.NET Core 2.1和Swashbuckle.AspNetCore 2.5.0。