如何使用OpenAPI(Swagger)描述动态表单数据?

如何使用OpenAPI(Swagger)描述动态表单数据?,swagger,multipartform-data,openapi,Swagger,Multipartform Data,Openapi,我正在尝试为此多部分/表单数据请求创建OpenAPI定义: curl -X POST \ http://localhost:1234/api/v1/Submit \ -H 'cache-control: no-cache' \ -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \ -H 'sessionkey: kjYgfORsZ0GeiCls0FcR7w=

我正在尝试为此
多部分/表单数据
请求创建OpenAPI定义:

curl -X POST \
  http://localhost:1234/api/v1/Submit \
  -H 'cache-control: no-cache' \
  -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
  -H 'sessionkey: kjYgfORsZ0GeiCls0FcR7w==' \
  -F item1=abc \
  -F item2=def
  -F item3=ghi
  ...
我的API定义如下:

post:
消耗:
-多部分/表单数据
生产:
-应用程序/json
参数:
-in:formData
名称:项目1
类型:字符串
-in:formData
名称:项目2
类型:字符串
它适用于formData中的固定字段

但是,我的表单数据将是动态的,我需要能够发送任意键和值

我尝试更改表单参数以使用数组和
附加属性
,但它没有产生所需的结果:

-in:formData
模式:
其他属性:
类型:对象
...
-in:formData
类型:数组
项目:
类型:字符串

可以用不同的键和值定义动态表单数据吗?

可以使用OpenAPI 3.0定义动态表单数据,但不能使用OpenAPI 2.0(Swagger 2.0)。OpenAPI 2.0仅支持表单数据中的固定键名称

在OpenAPI 3.0中,您可以使用带有
附加属性的模式来描述动态表单数据

openapi:3.0.2
...
服务器:
-网址:'http://localhost:1234/api/v1'
路径:
/提交:
职位:
请求主体:
必填项:true
内容:
多部分/表单数据:
模式:
#对象属性对应于表单字段
类型:对象
其他属性:
类型:字符串
响应:
'200':
描述:好的

在Swagger UI中测试请求时,以JSON格式输入字段名称和值:

{
  "field1": "value1",
  "field2": "value2",
  "field3": "value3"
}
Swagger UI将这些值作为单个表单字段发送:


是否有一种方法可以表示多部分/表单数据的任意键,以及
格式:binary
是否允许用户上传任意键文件?我尝试了
附加属性
,但没有成功。它只是认为它们是弦。忽略了
格式:二进制