如何在OpenAPI中配置带数组符号的字符串数组参数且保留类型显示?
解决方案
可以实现,无需将schema改为type: string,但需要基于OpenAPI 3.x规范定义参数,并使用兼容的Swagger UI版本(3.x及以上)。
具体参数定义
parameters: - name: "myParameter" in: query description: array of items required: true allowEmptyValue: false allowReserved: true # 可选:允许参数值包含[]、"等保留字符,避免自动URL编码(根据后端需求调整) content: application/json: schema: type: array items: type: string example: - 'ABC' - 'DEF'
说明
- 通过
content.application/json指定参数的序列化格式为JSON,既保留了array[string]的类型定义,Swagger UI也会显示对应的数组输入组件; - 发送请求时,Swagger UI会将数组序列化为
["ABC","DEF"]格式的字符串作为myParameter的参数值; allowReserved: true用于控制是否允许参数值包含URL保留字符。如果后端接受未编码的参数值,加上该字段即可;如果后端要求URL编码,可移除该字段,此时参数值会被编码为%5B%22ABC%22%2C%22DEF%22%5D,后端仍可解析为JSON数组。
OpenAPI 2.0局限性
若仍使用OpenAPI 2.0规范,由于缺少content字段来指定媒体类型,无法在不将schema改为type: string的前提下实现该需求,建议升级到OpenAPI 3.x。
内容的提问来源于stack exchange,提问作者user15951701
相关产品推荐
相关产品推荐

