假设我在应用程序文件中创建了一个这样的路由器:
const usernameRouter = express.Router();
app.use('/:username', usernameRouter);
当我在路由器文件中时,如何访问:username变量?
没有内置的方法可以从子路由中获取该参数。你有几个选择:
1(使用请求原始URL
在子路由处理程序中,从req.originalUrl
中解析它。
2(将/:用户名移动到路由声明中
发送到路由器时不要使用通配符。相反,只需这样做:
app.use(usernameRouter);
然后,在usernameRouter内部,执行以下操作:
router.get("/:username/something", ...);
因此,您可以使用req.params.username
来访问它。
3(创建中间件以捕获req.params.username
使用中间件功能将参数设置到可以到达的位置:
app.use('/:username', (req, res, next) => {
req.username = req.params.username;
usernameRouter(req, res, next);
});
然后,您可以从子路由中的req.username
访问它。