在将请求正文传输到操作时,通常使用 multipart/form-data
作为 Content-Type
。与 2.0 相比,当使用 multipart
内容时,必须使用 schema
来定义操作的输入参数。这支持复杂结构以及支持多种文件上传的机制。
在传入 multipart
类型时,可以使用边界来分隔正在传输的内容部分——因此,为 multipart
定义了以下默认 Content-Type
- 如果属性是基本类型或基本类型值的数组,则默认 Content-Type 为
text/plain
- 如果属性是复杂类型或复杂值的数组,则默认的 Content-Type 为
application/json
。 - 如果属性是
type: string
且format: binary
或format: base64
(也称为文件对象),则默认的 Content-Type 为application/octet-stream
。
示例
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
id:
type: string
format: uuid
address:
# default Content-Type for objects is `application/json`
type: object
properties: {}
profileImage:
# default Content-Type for string/binary is `application/octet-stream`
type: string
format: binary
children:
# default Content-Type for arrays is based on the `inner` type (text/plain here)
type: array
items:
type: string
addresses:
# default Content-Type for arrays is based on the `inner` type (object shown, so `application/json` in this example)
type: array
items:
type: '#/components/schemas/Address'
引入了一个 encoding
属性,用于控制 multipart
请求体部分的序列化。此属性**仅**适用于 multipart
和 application/x-www-form-urlencoded
请求体。