Node.js请求模块具有相同名称的多个参数

时间:2018-05-14 18:16:07

标签: node.js

我正在尝试从我的节点应用程序发送http请求。该请求具有多个具有相同名称的参数。我在接收端遇到麻烦。

参数未达到所需格式。

请求:

city[]=1
city[]=2

这是我从前端发送普通提取请求时在服务器上看到的内容。

city: [1, 2]

当我使用另一个端点使用节点的请求模块向上述同一端点发出请求时,我在服务器端看到的是什么。

city[][0]: 1
city[][1]: 2

这是我用来从服务器发出请求的HAR对象。

{
  "method": "POST",
  "queryString": [],
  "headers": [
    {
      "name": "content-type",
      "value": "application/x-www-form-urlencoded"
    }
  ],
  "url": "http://localhost:3001/api/v2/roles/test",
  "postData": {
    "mimeType": "application/x-www-form-urlencoded",
    "params": [
      {
        "name": "city[]",
        "value": "1"
      },
      {
        "name": "city[]",
        "value": "2"
      }
    ]
  }
}

2 个答案:

答案 0 :(得分:0)

city[]是javascript对象的奇数参数,因为方括号基本上是为数组保留的。如果您在请求中发送了多个city参数,我希望看到city数组。 我建议不要在参数名称中使用方括号。

但是,如果你仍然坚持这一点,也许你可以使用一些字符串表示法(例子)来访问请求中的params对象:

req.params['city[]'][0]

无论哪种方式,请务必检查参数是否为数组。如果您只发送一个city个查询参数,那么您最终会city: 1而不是city: [1]

答案 1 :(得分:0)

我结束了一个名为node-fetch的模块。这很简单,也很轻松。

const params = new URLSearchParams(init);

params.append('foo[]', 1);
params.append('foo[]', 2);

fetch('url/here's, params);