В сгенерированном json-адресе Swagger отсутствует компонент «securityschemes»

#openapi #springfox #openapi-generator

Вопрос:

Сгенерированный swagger.json отсутствует компонент securityscheme. Когда я копирую URL — адрес json и вставляю его в редактор swagger, я получаю-введите описание изображения здесь

Сгенерированный yaml в файле swagger.json выглядит следующим образом —

 openapi: 3.0.3
info:
  title: Test YAML
  version: 1.0.0
servers:
  - url: 'localhost'
    description: Inferred Url
tags:
  - name: device-controller
    description: the device API
  - name: api-controller
    description: API
paths:
  /api/device:
    get:
      tags:
        - ABCD
      summary: Device SUMMARY.
      description: Device DESCRIPTION.
      operationId: getDevice
      parameters:
        - name: X-Request-ID
          in: header
          description: 'request Id, will return in the response headers, and appear in logs'
          required: false
          schema:
            type: string
      responses:
        '200':
          description: list of commands set
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CommandSet'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: The specified resource was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - BasicAuth: []
components:
  schemas:
    CommandSet:
      title: CommandSet
      required:
        - name
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 07da6fd8-5abc-4dc4-bcec-df309d123d17
        name:
          type: string
          example: Deny
    Error:
      title: Error
      type: object
      properties:
        code:
          type: string
          example: '400'
        message:
          type: string
          example: Bad Request
 

его не хватает

 components:
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
 

Я определил в папке ресурсов следующий файл yaml

 openapi: 3.0.2
info:
  title: Policy APIs
  description: 'Policy APIs for manage Policy Sets, authorization policies, authentication policies, and policy elements.'
  version: 1.0.0
  license:
    name: Apache 2.0
    url: 'https://www.apache.org/licenses/LICENSE-2.0.html'
  contact:
    email: abc@gmail.com
servers:
  - url: 'https://{server}/v1/policy'
    variables:
      server:
        default: localhost
        description: The host where the API is rooted
security:
  - BasicAuth: []
paths:
  /device-admin/command-sets:
    parameters:
      - $ref: '#/components/parameters/XRequestIdHeader'
    get:
      summary: Device Admin - Return list of command sets.
      description: Device Admin - Return list of command sets.
      operationId: getDeviceAdminCommandSets
      tags:
        - Device Administration - Command Set
      responses:
        '200':
          description: list of commands set
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CommandSet'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
  parameters:
    XRequestIdHeader:
      in: header
      name: X-Request-ID
      description: 'request Id, will return in the response headers, and appear in logs'
      schema:
        type: string
      required: false
  responses:
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The specified resource was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example: '{code: 404, message: The specified resource was not found}'
  schemas:
    CommandSet:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          example: DenyAllCommands
          description: Command used in Device Admin authorization policies
        id:
          type: string
          format: uuid
          example: 07da6fd8-5abc-4dc4-bcec-df309dbf4d17
    Error:
      type: object
      properties:
        code:
          type: string
          example: 400
        message:
          type: string
          example: Bad Request
 

Как получить компонент securityscheme в определении URL-адреса swagger.
Я использую oas 3.x и инструмент генератора openapi для генерации кода java.

Ответ №1:

В OpenAPI 3.0 массив серверов используется для указания одного или нескольких базовых URL-адресов для вашего API. серверы заменяет ключевые слова хост, базовый путь и схемы, используемые в OpenAPI 2.0. Каждый сервер имеет URL-адрес и необязательное описание в формате уценки.

https://swagger.io/docs/specification/api-host-and-base-path/

Добавьте массив серверов в спецификацию swagger