NodeJS 在Swagger OpenApi 3.0中将数组作为查询参数传递

vjrehmav  于 2023-11-17  发布在  Node.js
关注(0)|答案(1)|浏览(200)

我目前给出了下面的代码来获取一个值数组作为查询参数(在Node-express,nodejs v14.17和OpenAPI版本3.0.1中),

- name: abcd
          description:  abcd
          in: query
          required: false
          schema:
            type: array
            items:
              type: string

字符串
但是它只在至少有两个值的情况下才将req作为数组发送(类型为object)。对于单个值,类型为string。如何始终将req作为数组本身获取?
x1c 0d1x的数据
例如,如果我给予一个值,
“你好”,console.log(typeof(req.query["abcd"]),req.query["abcd"])
O/P:string Hello
但如果我给予“你好”和“世界”
O/P:object ['Hello','World']

3qpi33ja

3qpi33ja1#

正如this answer解释的那样,当一个查询参数传递一个单一的值时,例如?abcd=hello,Express将其解析为常规值(即字符串)而不是数组。
要传递一个单值数组,你需要在查询参数名的末尾追加[],即?abcd[]=hello。这意味着你需要在OpenAPI文件中更改参数名:

- name: abcd[]    # <------------
         description:  abcd
         in: query
         required: false
         schema:
           type: array
           items:
             type: string

字符串

相关问题