如何在OpenAPI(Swagger)中记录动态查询参数名称?

如何在OpenAPI(Swagger)中记录动态查询参数名称?,swagger,swagger-editor,swagger-codegen,openapi,Swagger,Swagger Editor,Swagger Codegen,Openapi,有没有办法记录以下查询 GET api/v1/users?name1=value1&name2=value 其中,查询参数名称是动态的,将从客户端接收 我使用的是最新的Swagger API。自由形式查询参数可以使用OpenAPI 3.0来描述,但不能使用OpenAPI 2.0(Swagger 2.0)。参数必须使用序列化方法style:form和explode:true具有type:object。对象将被序列化为?prop1=value1&prop2=value2&…,其中单个pro

有没有办法记录以下查询

GET api/v1/users?name1=value1&name2=value
其中,查询参数名称是动态的,将从客户端接收


我使用的是最新的Swagger API。

自由形式查询参数可以使用OpenAPI 3.0来描述,但不能使用OpenAPI 2.0(Swagger 2.0)。参数必须使用序列化方法
style:form
explode:true
具有
type:object
。对象将被序列化为
?prop1=value1&prop2=value2&…
,其中单个prop=value对是对象属性

openapi:3.0.1
...
路径:
/用户:
获取:
参数:
-in:查询
姓名:params
模式:
类型:对象
#如果参数值为特定类型,例如字符串:
其他属性:
类型:字符串
#如果参数值可以是不同的类型
#(例如字符串、数字、布尔值等)
#附加属性:true
#`style:form`和`explode:true`是默认的序列化方法
#对于查询参数,可以省略这些关键字
风格:形式
爆炸:真的

Swagger UI 3.15.0+和Swagger Editor 3.5.6+支持自由形式查询参数。在参数编辑器中,以JSON对象格式输入参数名称和值,例如
{“prop1”:“value1”、“prop2”:“value2”}
。“试用”将以
param=value
查询参数的形式发送:


但不确定是否支持Codegen。

可以使用OpenAPI 3.0描述自由形式查询参数,但不能使用OpenAPI 2.0(Swagger 2.0)。参数必须使用序列化方法
style:form
explode:true
具有
type:object
。对象将被序列化为
?prop1=value1&prop2=value2&…
,其中单个prop=value对是对象属性

openapi:3.0.1
...
路径:
/用户:
获取:
参数:
-in:查询
姓名:params
模式:
类型:对象
#如果参数值为特定类型,例如字符串:
其他属性:
类型:字符串
#如果参数值可以是不同的类型
#(例如字符串、数字、布尔值等)
#附加属性:true
#`style:form`和`explode:true`是默认的序列化方法
#对于查询参数,可以省略这些关键字
风格:形式
爆炸:真的

Swagger UI 3.15.0+和Swagger Editor 3.5.6+支持自由形式查询参数。在参数编辑器中,以JSON对象格式输入参数名称和值,例如
{“prop1”:“value1”、“prop2”:“value2”}
。“试用”将以
param=value
查询参数的形式发送:


但不确定是否支持Codegen。

@Helen的答案即使在Spring使用库的情况下也能完美地工作

依赖关系:


org.springdoc
springdoc openapi用户界面
1.1.43
在API函数中,添加以下参数:

@Parameter(in=ParameterIn.QUERY,
name=“params”,style=ParameterStyle.FORM,
schema=@schema(type=“object”),explode=explode.TRUE,
示例=”)字符串paramsObj

@Helen的答案即使在Spring使用库的情况下也非常有效

依赖关系:


org.springdoc
springdoc openapi用户界面
1.1.43
在API函数中,添加以下参数:

@Parameter(in=ParameterIn.QUERY,
name=“params”,style=ParameterStyle.FORM,
schema=@schema(type=“object”),explode=explode.TRUE,
示例=”)字符串paramsObj

谢谢!这就是我需要的。另外,您知道有没有办法从Spring Boot应用程序中导出API文档以用于OpenAPI 3.0吗?@abisheksampath抱歉,我不熟悉Spring Boot。如果你的具体意思是它似乎还没有(截至2018年11月)。这对codegen不起作用。访问架构时,它会抛出一个错误
无法将未定义或null转换为object
。属性
@marainesparnisari会向您使用的codegen项目发送错误报告。谢谢!这就是我需要的。另外,您知道有没有办法从Spring Boot应用程序中导出API文档以用于OpenAPI 3.0吗?@abisheksampath抱歉,我不熟悉Spring Boot。如果你的具体意思是它似乎还没有(截至2018年11月)。这对codegen不起作用。当访问
架构时,它抛出一个错误
无法将未定义或null转换为object
。properties
@MariaInesParnisari将错误报告发送到您使用的codegen项目。这不能与
映射一起使用。类型被忽略:这不能与
映射一起工作。将忽略该类型: