我目前给出了以下代码来获取一组值作为查询参数(在 Node-express、nodejs v14.17 和 OpenAPI 版本 3.0.1 中),
- name: abcd
description: abcd
in: query
required: false
schema:
type: array
items:
type: string
但它仅在至少有两个值时将请求作为值数组(类型为 object
)发送。对于单个值,类型是 string
。如何始终将 req 获取为数组本身?
例如,
如果我给一个值说“你好”,
console.log(typeof(req.query["abcd"]),req.query["abcd"])
O/P:string Hello
但如果我给出“Hello”和“World”,
O/P: object ['Hello','World']
最佳答案
作为this answer解释说,当查询参数传递单个值时,例如?abcd=hello
,Express 将其解析为常规值(即字符串)而不是数组。
要传递单值数组,您需要在查询参数名称的末尾附加[]
,即?abcd[]=hello
。这意味着您需要更改 OpenAPI 文件中的参数名称:
- name: abcd[] # <------------
description: abcd
in: query
required: false
schema:
type: array
items:
type: string
关于node.js - 在 Swagger OpenApi 3.0 中将数组作为查询参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68452127/