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.