You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中GET请求如何传递多个参数?含数组参数写法验证

在Node.js中用request模块传递数组参数的正确姿势

先聊聊你最开始的写法哈:

var myJsonString = JSON.stringify(url);
request.get('http://localhost:8090/saveURL/'+myJsonString, function(req, res,body) {
 console.log(body);
})

这种方式其实不太靠谱——直接把JSON字符串硬拼在URL路径里,很容易踩坑:比如URL有长度上限,数组内容多了直接就请求失败;而且JSON里的特殊字符(像/、?这类)会打乱URL的结构,后端根本没法正确解析你的参数。

再看你修改后的代码:

request.get({
 url: 'http://localhost:8090/saveURL/',
 qs: { param1: JSON.stringify(url)}
}, function(req, res,body) {
 console.log(req);
 console.log(body);
} )

这个写法完全正确!

为啥这个写法没问题?

request模块的qs选项就是专门用来处理查询参数的,它会自动帮你对参数值做URL编码,不用担心特殊字符搞砸URL。把数组转成JSON字符串传过去,后端只要解析这个字符串就能还原出原数组,逻辑很顺畅。

给你几个额外的小建议:

  1. 后端解析要对应:比如用Express的话,后端得把param1的值做JSON解析才能拿到数组:
    app.get('/saveURL', (req, res) => {
      try {
        const urlArray = JSON.parse(req.query.param1);
        // 这里写你的数组处理逻辑
        res.status(200).send('处理成功');
      } catch (err) {
        res.status(400).send('参数格式错误');
      }
    });
    
  2. 简单数组可以更省事:如果你的数组里都是字符串、数字这种简单类型,其实不用转JSON,直接把数组传给qs就行。request会自动把它转成符合URL规范的格式(比如param1=val1&param1=val2),后端Express能直接通过req.query.param1拿到数组,省掉JSON解析的步骤:
    request.get({
      url: 'http://localhost:8090/saveURL/',
      qs: { param1: url } // url是你的原数组
    }, function(err, res, body) {
      // 注意这里回调第一个参数是err,不是req,你之前写错啦
      if (err) {
        console.error('请求出错:', err);
        return;
      }
      console.log(body);
    });
    
  3. 回调参数别搞混:request的回调参数顺序是(err, res, body),你之前写的第一个参数是req,其实那是错误对象,建议改过来,不然调试的时候容易懵~

内容的提问来源于stack exchange,提问作者pepe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:13:22