Как определить ответ с двумя объектами схемы - PullRequest
0 голосов
/ 20 января 2019

У меня есть два объекта схемы:

'# / компоненты / схемы / клиент' '# / компоненты / схемы / аккаунт'

Есть ли способ определить тело сообщения после ответа с помощьюи «# / компоненты / схемы / клиент», и «# / компоненты / схемы / учетная запись» с использованием открытых API 3.0, спецификации

1 Ответ

0 голосов
/ 21 января 2019

Это зависит от варианта использования.

1) Если ответом является customer или account, используйте oneOf:

      responses:
        '200':
          description: A `customer` object or an `account` object
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/customer'
                  - $ref: '#/components/schemas/account'
                # Example for Swagger UI - see the note below
                example:
                  foo: bar

Примечание дляПользователи Swagger UI: В настоящее время пользовательский интерфейс Swagger не генерирует примеры из oneOf схем.Обходной путь должен предоставить пользовательский example наряду с oneOf.

2) Если ответ имеет комбинированный набор свойств из customer и account, используйте allOf:

      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MyResponse'

components:
  MyResponse:
    allOf:
      - $ref: '#/components/schemas/customer'
      - $ref: '#/components/schemas/account'

3) Если ответ имеет два свойства, одно из которых является объектом customer, а другое - объектом account, используйте следующее:

      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MyResponse'

components:
  MyResponse:
    type: object
    properties:
      customer:
        $ref: '#/components/schemas/customer'
      account:
        $ref: '#/components/schemas/account'
...