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

Node.js使用request-promise插件时如何向URL中传递参数值

你需要替换URL中的路径占位符、Header中的token占位符,分几种常见场景处理即可:


1. 直接使用ES6模板字符串替换(最简单)

如果参数是已知变量,直接用反引号包裹URL,用${变量名}替换占位符即可,修改后的完整代码示例:

async function getDetails (req) {
    // 先拿到你需要的参数,这里假设是从req对象中获取,可根据实际逻辑调整
    const studentId = req.params.studentId
    const studentBranch = req.params.studentBranch
    const myToken = req.token // 替换为你实际的token获取逻辑

    var options = {
        url: `http://localhost:3000/api/student/id/${studentId}/branch/${studentBranch}`,
        method: 'GET',
        headers: {
          'User-Agent': 'my request',
          'Authorization': `Bearer ${myToken}`,
          'Content-Type': 'application/json',
          'Accept': 'application/json'
        },
        json: true
      };

   let res= await rp(options)
    .then(function (body) {
        return body;
    })
    .catch(function (err) {
        console.log("error get balance",err)
    });

    return res;
}

注意:你原代码里的占位符{studen_id}拼写少了一个字母t,注意和你的变量名对齐


2. 通用占位符替换函数(适合多占位符场景)

如果模板占位符数量多,不想每次写长模板字符串,可以封装一个简单的替换函数,自动匹配所有占位符:

function renderUrl(template, params) {
  return template.replace(/{(\w+)}/g, (match, key) => encodeURIComponent(params[key] || ''))
}

使用的时候传入url模板和参数对象即可:

const urlTemplate = 'http://localhost:3000/api/student/id/{student_id}/branch/{studentbranch}'
const url = renderUrl(urlTemplate, {
  student_id: studentId,
  studentbranch: studentBranch
})

3. GET请求查询参数处理(可选)

如果你需要拼接?后面的查询参数(比如?name=xxx&age=18),不需要手动拼接,直接在options中添加qs属性即可,request-promise会自动编码拼接到URL末尾:

var options = {
  // 其他配置不变
  qs: {
    name: '张三',
    age: 18
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:12:00