首页 > 解决方案 > 在 Swagger OpenApi 3.0 中将数组作为查询参数传递

问题描述

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

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

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

在此处输入图像描述

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

标签: node.jsexpressswaggeropenapi

解决方案


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

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

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

推荐阅读