Swagger - 带有 form-urlEncoded 项目的 Formdata
Swagger - Formdata with a form-urlEncoded Item
我正在尝试为我的 api 创建一个 swagger 文档,但我有点卡住了,我想一旦你知道怎么做就很容易实现。
我有一个接受 post 作为 multipart/form-data 的端点(因为它需要文件上传),但是其中一个项目(假装它被称为 "carParts"此示例)是一个 FormURLEncodedContent 类型,它是 key/value 对的列表。
所以结构是这样的:
车名:福特
carAge:20
carParts:wheels=4&horn=true&windscreen=broken
我的问题是我不确定如何在 swagger 文档中表达这个 ("carParts")。
我能看到的唯一方法是将 "carParts" 项设置为字符串类型,但我失去了招摇的意义,因为我想要 "wheels"、"horn" 和 "windscreen" 是显式字段,而不仅仅是单个 form-urlEncoded 字符串。
是否可以大摇大摆地做到这一点?
如果不是,我想唯一的其他选择是更改我的 api 以将 "carParts" 项目作为平面列表而不是结构(即丢失 "carParts"父级别,并让项目只是其他顶级表单数据项目)。
这似乎是最直接的方法,但如果我需要修改 api 来实现这一点,那就太可惜了(不是主要问题,只是感觉不对)。
这在 OpenAPI 3.0 中是可能的,但在 OpenAPI/Swagger 2.0 中是不可能的。
在 OpenAPI/Swagger 2.0 中,表单字段不能是对象,因此您必须将 carParts
定义为字符串或基元数组。
在 OpenAPI 3.0 中,您可以在表单字段中包含对象,并且可以指定如何序列化这些对象。目前例子不多,但我觉得你的情况可以描述如下:
paths:
/something:
post:
requestBody:
required: true
content:
multipart/form-data:
# Form fields (carName, etc.) are defined as object properties
schema:
type: object
properties:
carName:
type: string
carAge:
type: string
carParts:
type: object
properties:
wheels:
type: integer
horn:
type: boolean
windscreen:
type: string
# By default, the "carParts" object will be serialized as application/json,
# but we can override the serialization method to be form-urlencoded
encoding:
carParts:
contentType: application/x-www-form-urlencoded
我正在尝试为我的 api 创建一个 swagger 文档,但我有点卡住了,我想一旦你知道怎么做就很容易实现。
我有一个接受 post 作为 multipart/form-data 的端点(因为它需要文件上传),但是其中一个项目(假装它被称为 "carParts"此示例)是一个 FormURLEncodedContent 类型,它是 key/value 对的列表。
所以结构是这样的:
车名:福特
carAge:20
carParts:wheels=4&horn=true&windscreen=broken
我的问题是我不确定如何在 swagger 文档中表达这个 ("carParts")。
我能看到的唯一方法是将 "carParts" 项设置为字符串类型,但我失去了招摇的意义,因为我想要 "wheels"、"horn" 和 "windscreen" 是显式字段,而不仅仅是单个 form-urlEncoded 字符串。
是否可以大摇大摆地做到这一点?
如果不是,我想唯一的其他选择是更改我的 api 以将 "carParts" 项目作为平面列表而不是结构(即丢失 "carParts"父级别,并让项目只是其他顶级表单数据项目)。 这似乎是最直接的方法,但如果我需要修改 api 来实现这一点,那就太可惜了(不是主要问题,只是感觉不对)。
这在 OpenAPI 3.0 中是可能的,但在 OpenAPI/Swagger 2.0 中是不可能的。
在 OpenAPI/Swagger 2.0 中,表单字段不能是对象,因此您必须将 carParts
定义为字符串或基元数组。
在 OpenAPI 3.0 中,您可以在表单字段中包含对象,并且可以指定如何序列化这些对象。目前例子不多,但我觉得你的情况可以描述如下:
paths:
/something:
post:
requestBody:
required: true
content:
multipart/form-data:
# Form fields (carName, etc.) are defined as object properties
schema:
type: object
properties:
carName:
type: string
carAge:
type: string
carParts:
type: object
properties:
wheels:
type: integer
horn:
type: boolean
windscreen:
type: string
# By default, the "carParts" object will be serialized as application/json,
# but we can override the serialization method to be form-urlencoded
encoding:
carParts:
contentType: application/x-www-form-urlencoded