如何使用OpenAPI(Swagger)描述多部分响应?

时间:2017-12-01 16:21:20

标签: swagger multipart openapi

我有一个服务可以创建一个包含以下内容的多部分文件:

  • 表示图像缓冲区的数据字节数组
  • 表示图像信息(坐标,格式等)的JSON

是否可以使用YAML在OpenAPI(Swagger)定义中对此自定义响应进行建模?

1 个答案:

答案 0 :(得分:6)

可以使用OpenAPI 3.0来描述多部分响应,但不能使用OpenAPI 2.0(fka Swagger 2.0)来描述。

openapi: 3.0.0
...
paths:
  /something:
    get:
      responses:
        '200':
          description: OK
          content:
            multipart/mixed: # <-- Content-Type of the response
              schema:
                type: object
                properties:
                  # Part 1 - application/octet-stream
                  file:  # <-- part name
                    type: string
                    format: binary
                  # Part 2 - application/json
                  metadata:  # <-- part name
                    type: object
                    properties:
                      foo:
                        type: string
                        example: bar
                    required:
                      - foo

              # Optional, see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#encoding-object
              encoding:
                file:
                  ...
                metadata:
                  ... 

可选的encoding密钥可用于覆盖子部件的Content-Type或为子部件添加标头(例如Content-Disposition)。