Swashbuckle / Swagger - поле авторизации отсутствует для маршрутов без параметров - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть asp.net WebAPI (не основной), где я только что добавил Swagger через Swashbuckle.Я использую авторизацию JWT, поэтому добавил добавленную авторизацию, как описано здесь .

т.е.

    public class AddAuthorizationHeaderParameterOperationFilter : IOperationFilter
    {
        public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
        {
            if (operation.parameters != null)
            {
                operation.parameters.Add(new Parameter
                {
                    name = "Authorization",
                    @in = "header",
                    description = "access token",
                    required = false,
                    type = "string"
                });
            }
        }
    }

    configuration
        .EnableSwagger(c =>
        {
            c.SingleApiVersion("v1", "Commerce Services - Discounts");

            foreach (var commentFile in xmlCommentFiles)
            {
                c.IncludeXmlComments(commentFile);
            }

            c.OperationFilter<ExamplesOperationFilter>();
            c.OperationFilter<AddAuthorizationHeaderParameterOperationFilter>();
        })
        .EnableSwaggerUi(config => config.DocExpansion(DocExpansion.List));

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

        "parameters": [
              {
                "name": "myTransactionStartModel",
                "in": "body",
                "description": "My transaction start model.",
                "required": true,
                "schema": {
                  "$ref": "#/definitions/MyTransactionStartModel"
                }
              },
              {
                "name": "Authorization",
                "in": "header",
                "description": "Replace {token} with generated token",
                "required": false,
                "type": "string",
                "default": "bearer {token}"
              }
            ],

И в пользовательском интерфейсе я вижу поле авторизации ...

enter image description here

Однако, любой маршрут, который не имеет каких-либо параметров, также не получает поля авторизации.Раздел "parameters": отсутствует в документе, и, следовательно, нет авторизации.И поэтому у меня нет авторизации в пользовательском интерфейсе, поэтому я не могу запустить маршрут через опробовать его!кнопка (поскольку я не могу добавить JWT, чтобы он мог работать)

У кого-нибудь есть какие-либо идеи по поводу этого?

Заранее благодарен за любую помощь

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