Swagger как связать возвращаемое значение операции как авторизацию - PullRequest
1 голос
/ 28 октября 2019

Пишу чванство под спецификацию OAS 3.0.2. И интересно, можно ли установить значение авторизации (BearerAuth) через возвращаемое значение операции.

Теперь мне нужно сначала вызвать api / login, а затем скопировать токен возврата и вставить в панель авторизации. Есть ли лучший способ автоматически связать значение между операцией и безопасностью?

Я пытался использовать Ссылки , но я не уверен, что поддержка по безопасности. (В официальном документе не упоминается способ реализации в целях безопасности)

paths:
  /login:
    post:
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                account:
                  type: string
                password:
                  type: string
      responses:
        '200':
          description: data.apiToken
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    description: data
                    properties:
                      apiToken:
                        type: string
                        description: I need this as authorization value
          links:
            ApiToken:
              operationId: apiToken
              parameters:
                apiToken: '$response.body#/data.apiToken'

Вход в систему прошел успешно, а тело ответа выглядит так:

{
  "data":{
    "apiToken": "xxxxxx"
  }
}

Но на следующем шаге я понятия не имею, каксделать. Ответ 401, потому что токен не отправляется в заголовках (... я не удивлен).

  /someapi:
    get:
      summary: This API need auth to get data
      operationId: apiToken
      security:
        - BearerAuth: [apiToken]
      responses:
        '401':
            description: Not work
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

Если я копирую / вставляю вручную, он может быть успешно авторизован. Есть ли способ решить эту проблему или просто не поддерживать эту функцию прямо сейчас? Большое вам спасибо.

...