Веб-API MVC5, использующий Swagger, не будет вызывать API с помощью Try it! с заголовками

  • Я настроил пользовательский интерфейс Swagger в своем веб-API MVC5. Для тестирования API swagger отлично работает, пока я не добавлю некоторые параметры заголовка.
  • API созданы таким образом, что поля имени пользователя и пароля находятся в заголовках, а все остальные данные берутся в теле.
  • Заголовки добавляются IOperationFilter, как это предлагается в Web Api Как добавить параметр заголовка для всех API в Swagger и OperationFilter добавляется в SwaggerConfig.cs как: c.OperationFilter<AddHeaderParameters>();
    public class AddHeaderParameters : 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 = "Account Username",
                @in = "header",
                type = "string",
                required = true,
            });
            operation.parameters.Add(new Parameter
            {
                name = "Account Password",
                @in = "header",
                type = "string",
                required = true,
            });
        }
    }
    

Интерфейс Swagger с заголовками введите здесь описание изображения

Нужна помощь, что я упустил или что-то не так сделал.


person Sh.Imran    schedule 04.08.2020    source источник


Ответы (1)


Я получил решение проблемы, с которой столкнулся, как указано выше в вопросе. Делиться здесь может быть полезно для других.

Когда я создал класс AddHeaderParameters для получения заголовков в пользовательском интерфейсе swagger, я дал самоопределение имени заголовка (это было фактической причиной проблемы). Имя заголовка должно совпадать с фактическим именем заголовка.

В моем случае, например. Имя заголовка было AccountUserName, которое я использовал в заголовке чванства с указанием пробела как Account Username.

Правильный способ

operation.parameters.Add(new Parameter
{
    name = "AccountUserName",
    @in = "header",
    type = "string",
    required = true,
});
person Sh.Imran    schedule 05.08.2020
comment
да, я использовал чванство, но не возвращал заголовки с несколькими буквами, поэтому это информативно и полезно. - person Zeeshan Ahmad Khalil; 05.08.2020