Web Api как добавить параметр заголовка для всех API в Swagger
Я искал возможные способы добавить параметр заголовка запроса, который будет автоматически добавлен к каждому методу в my web-api
но я не мог найти четкого.
при поиске я обнаружил, что метод OperationFilter()
надо что-то делать.
3 ответов
Да, вы можете сделать это через наследование от IOperationFilter
вы можете найти ответ на GitHub здесь: AddRequiredHeaderParameter
public class AddRequiredHeaderParameter : IOperationFilter
{
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (operation.parameters == null)
operation.parameters = new List<Parameter>();
operation.parameters.Add(new Parameter
{
name = "X-User-Token",
@in = "header",
type = "string",
required = false
});
}
}
затем вы идете в свой SwaggerConfig.cs
файл и добавьте следующее в :
c.OperationFilter(() => new AddRequiredHeaderParameter());
восстановить, и наслаждаться.
Я должен был сделать это немного по-другому, не знаю почему. Вот что я сделал, чтобы добавить значение заголовка:
Это было добавлено в мою конфигурацию swagger:
c.OperationFilter<AddRequiredHeaderParameter>();
и это был класс:
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 ядро 2.1 и Swashbuckle.AspNetCore 2.5.0.