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

Express路由路径参数丢失:req.params为空如何排查?

问题分析与解决办法

你遇到的问题是因为Express Router默认不会合并父路由的URL参数到子路由的req.params中,具体解决步骤如下:

  • 定义userRoutes时,必须启用mergeParams: true选项,修改后的代码如下:
const express = require('express');
// 关键:创建Router实例时添加mergeParams配置
const userRoutes = express.Router({ mergeParams: true });

userRoutes.get("/", userController.getStuff);

module.exports = userRoutes;
  • 这样修改后,子路由里的中间件和控制器就能正常获取到req.params.phone了,不管请求中的+号是否做了URL编码(编码后为%2B),参数都能被正确解析。

原因说明

Express的Router实例默认会维护独立的req.params对象,父路由(也就是app.use("/api/:phone/stuff", userRoutes)里的:phone)的参数不会自动传递给子路由。开启mergeParams: true后,Router会把父路由的参数合并到当前的req.params中,这样你就能在子路由的中间件和控制器里访问到这些参数了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:03:27