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

如何向GET接口传递多个参数,为何请求未匹配到对应服务端路由

结论

你当前的路径参数传递思路和路由写法本身符合Express的路由匹配规则,没有原则性错误,请求无法命中路由基本是细节问题导致的,可按以下顺序排查:

常见问题排查点

  • 先检查前端两个变量numticket、carry的取值:不能是undefined、空值,也不能包含/这类特殊字符。如果变量异常,实际请求的路径层级会和后端定义的两层参数规则不匹配,比如carry为undefined时,请求路径会变成/demos/price/xxx/undefined,如果是传空值会出现连续斜杠,都无法匹配路由。
  • 确认后端路由的注册顺序:Express会按代码的编写顺序从上到下匹配路由,如果有优先级更高、规则更宽泛的路由写在当前路由前面,会提前命中请求,不会走到你写的这个路由里。比如前置写了app.get('/demos/price/*')这类通配路由,就会抢匹配。
  • 打开浏览器控制台的网络标签,确认实际发出的请求完整路径、状态码:如果是跨域错误,先处理后端的CORS配置;如果是404状态码,把实际请求路径和后端路由规则做比对,确认层级是否一致。
  • 注意你当前的路由处理函数没有给前端返回任何响应,就算路由命中,请求也会一直挂起直到超时,记得逻辑处理完补充res.json()或者res.send()返回响应内容。

优化建议

如果你的参数可能携带特殊字符,更推荐用查询参数的方式传值,容错率更高:
前端写法调整为:

const response = await fetch(`http://localhost:5000/demos/price?ticket=${numticket}&carry=${carry}`);

后端路由调整为:

app.get('/demos/price', async(req, res)=>{
  try{
      let ticket = req.query.ticket;
      let carry = req.query.carry;
      // 业务逻辑处理
      res.json({success: true})
  } catch(err){
    console.log(err.message);
    res.status(500).json({error: err.message})
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:06:02