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。
- 具有特殊字符的ASP.NET MVC标识电子邮件/用户名
- 尝试使用HttpClient上传文件时,Web Api的RequestEntityTooLarge响应
- 从Service Fabric WebAPI控制器写入ServiceEventSource
- 如何在.Net中优雅地关闭双向WebSocket
- 在ASP.NET Core Web API中注册新的DelegatingHandler
- WebAPI 2属性路由,区域不起作用
- WebApi强制操作返回xml
- 设置JsonConvert.DefaultSettings asp net core 2.0不能按预期工作
- WebAPI Selfhost:无法将多个参数绑定到请求的内容