Примеры Swagger Editor 3.8 не работают для схемы ссылочного массива - PullRequest
0 голосов
/ 29 мая 2020

Этот вопрос является продолжением этого похожего - поскольку @Helen попросил задать новый вопрос.

Кажется, что схема типа массива принимает только «пример», а не "Примеры". Следующая схема вызывает ошибку на сайте editor.swagger.io :

info:
  title: Example Inc. REST API version 1.0
  version: '1.0'
openapi: 3.0.0
components:
  schemas:
    user_reference:
      properties:
        comment:
          type: string
        middle_name:
          type: string
        domain:
          pattern: '^[0-9A-Za-z][0-9A-Za-z.-]*$'
          type: string
        id:
          minimum: 1
          type: integer
        first_name:
          type: string
        last_name:
          type: string
        username:
          pattern: '^[0-9A-Za-z_.@-]+$'
          type: string
      type: object
    owners_reference_list:
      type: array
      items:
        $ref: '#/components/schemas/user_reference'
      examples:
        by_site:
          summary: Access by site and username
          value:
            - domain: example.com
              username: jsmith
        by_id:
          value:
            - id: 14
          summary: Access by id
        by_other:
          summary: Access by other attributes
          value:
            - middle_name: X.
              last_name: Smith
              comments: Standard user
              first_name: John
  responses:
    ok:
      content:
        application/json:
          schema:
            type: string
      description: |
        ...
paths:
  /users:
    description: |
      A user account ...
    get:
      parameters:
        - description: |
            ...
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/owners_reference_list'
          name: owners_ref
          required: false
          in: query
      responses:
        '200':
          $ref: '#/components/responses/ok'

Но если я заменю атрибут «examples» на «example», например:

owners_reference_list:
  type: array
  items:
    $ref: '#/components/schemas/user_reference'
  example:
        - domain: example.com
          username: jsmith

, тогда все работает нормально.

На указанный вопрос дан ответ, что «примеры» поддерживаются в Swagger Editor 3.6.21, а в комментарии @Helen говорится, что сайт editor.swagger.io является с использованием версии 3.8.3.

1 Ответ

1 голос
/ 29 мая 2020

Схемы не поддерживают несколько examples, они поддерживают только один example.

Несколько examples могут использоваться только в:

  • телах запросов: requestBody.content.<media-type>.examples
  • ответы: responses.<code>.content.<media-type>.examples
  • параметры, в которых используется ключевое слово content: <parameter>.content.<media-type>.examples
...