node.js - 在 Swagger OpenApi 3.0 中将数组作为查询参数传递

标签 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

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

enter image description here

例如, 如果我给一个值说“你好”, 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/

相关文章:

javascript - 使用 Nodejs w/Express 将表单数据发布到 MySQL

javascript - 提交表单时出现错误 Cannot POST/public/register-controller

azure - 无法访问 Azure API 应用程序。 Swagger 文档在 Azure Web 门户中运行良好

node.js - Socket.io 不断轮询......它应该这样做吗?

javascript - 异步读取文件 - 异步读取所有文件并找到最大值

javascript - 如何从 Express.js 发送纯 HTML

swagger - 如何使用 OpenAPI/Swagger 定义数组项的排除类型?

javascript - 如何在 swaggerexpress 中附加中间件,如express-validator

node.js - 无法在某个范围内安装 NPM 包,或者无法在范围内安装 NPM 包(或者看起来像这样)

javascript - JSON 键存在但返回 false