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

fra*_*397 8 node.js express swagger openapi

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

       - name: abcd
          description:  abcd
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
Run Code Online (Sandbox Code Playgroud)

object但仅当至少有两个值时,它才会将请求作为值数组(类型为)发送。对于单个值,类型是string。如何始终将 req 作为数组本身获取?

在此输入图像描述

例如,如果我给出一个值
“Hello”, console.log(typeof(req.query["abcd"]),req.query["abcd"])
O/P:string Hello
但如果我给出“Hello”和“World”,
O/P:object ['Hello','World']

Hel*_*len 21

正如这个答案所解释的,当查询参数传递单个值时,例如?abcd=hello,Express 将其解析为常规值(即字符串)而不是数组。

要传递一值数组,需要[]在查询参数名称末尾追加,即?abcd[]=hello。这意味着您需要更改 OpenAPI 文件中的参数名称:

       - name: abcd[]    # <------------
         description:  abcd
         in: query
         required: false
         schema:
           type: array
           items:
             type: string
Run Code Online (Sandbox Code Playgroud)