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

NodeJS中使用Unirest传递URL多查询参数的方法求助

解决Unirest在Node.js中传递GET请求查询参数的问题

嘿,我来帮你搞定这个Unirest传递查询参数的问题!你之前踩的坑主要是用错了Unirest的方法,我来逐个解释问题所在,再给你正确的写法。

先说说你之前方案的问题

  • 方案1:Unirest里根本没有queryString这个方法,官方用来添加查询参数的是.query(),所以你才会遇到queryString is not a function的错误。
  • 方案2:routeParam是用来处理路径参数的(比如URL是/Api/learner/courses/:courseId这种带占位符的路径),而你要的是URL末尾的查询参数(?pageNumber=1&sortDirection=ASC这种),完全不是一个东西,所以这个方法用在这里不对。
  • 方案3:.send()是用来发送POST/PUT等请求的请求体数据的,GET请求通常不会携带请求体,大部分服务器收到带body的GET请求会直接报错,这就是你拿到500响应的原因,而且URL里的{pageNumber}写法也不符合查询参数的规则。

正确的两种写法

写法1:逐个添加查询参数

用.query()方法逐个传入键值对,Unirest会自动帮你拼接成URL末尾的查询参数:

unirest('GET', 'https://my-domain.com/Api/learner/courses')
  .header({ "content-type": "application/json", "authorization": token })
  .query("pageNumber", "1")
  .query("sortDirection", "ASC")
  .query("status", "all")
  .end(function (response) {
    response.status.should.be.equal(200);
  });

写法2:传入参数对象

如果参数多的话,直接传一个对象更方便,.query()会自动解析成查询字符串:

const params = { pageNumber: 1, sortDirection: "ASC", status: "all" };
unirest('GET', 'https://my-domain.com/Api/learner/courses')
  .header({ "content-type": "application/json", "authorization": token })
  .query(params)
  .end(function (response) {
    response.status.should.be.equal(200);
  });

这两种写法最终都会生成类似https://my-domain.com/Api/learner/courses?pageNumber=1&sortDirection=ASC&status=all的请求URL,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 18:48:14