Есть ли способ описать два разных типа ответов в OpenAPI 3.0? - PullRequest
0 голосов
/ 17 мая 2018

Что я хотел бы сделать, так это указать, что иногда ответом на вызов API может быть документ PDF, а иногда - JSON. Я хотел бы сделать это в формате OpenAPI 3.0. В случае PDF ответ будет выглядеть следующим образом:

      responses:
        '200':
          description: An invoice in PDF format.
          content:
            application/pdf:
              schema:
                type: string
                format: binary

А в случае ответа JSON это будет описывать ответ:

      responses:
        '200':
          description: A JSON object containing user name and avatar
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Invoice" 

Документация OAS3 (https://swagger.io/docs/specification/describing-responses/) предоставляет следующий пример того, как указать, что одна из нескольких различных схем JSON может быть ответом на определенный вызов API. Это почти то, что я хочу, кроме как вместо описания разные возможные схемы JSON, я бы хотел указать разные возможные типы контента, как описано выше. Есть ли способ сделать это в формате OAS3?

      responses:
        '200':
          description: A JSON object containing pet information
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/Cat'
                  - $ref: '#/components/schemas/Dog'
                  - $ref: '#/components/schemas/Hamster'

1 Ответ

0 голосов
/ 17 мая 2018

Просто обнаружил, что это работает:

responses:
    '200':
      description: "An invoice."
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Invoice"
        application/pdf:
          schema:
            type: "string"
            format: "binary"

См. Раздел «Типы носителей ответа» здесь: https://swagger.io/docs/specification/describing-responses/

...