我目前有一些路由器路由
router.route('/invite/token/:inviteToken')
.get(function (req, res) {
res.status(200).json(req.invite);
});
router.route('/invite/:inviteId')
.get(function (req, res) {
res.status(200).json(req.invite);
});
以下简单的路由器参数:
router.param('inviteToken', function (req, res, next, inviteToken) {
console.log('inviteToken');
// populate req.invite
next();
});
router.param('inviteId', function (req, res, next, inviteId) {
console.log('inviteId');
// populate req.invite
next();
});
但是,当我尝试通过令牌获取邀请时,始终首先使用文字值"token"
触发inviteId参数处理程序。我设置路线和参数的方式有问题吗?
更新1 有关详细说明
答案 0 :(得分:1)
路线顺序定义很重要,因此最佳做法是从最具体到最大的抓取。
app.get('/invite/token/:token', tokenHandler);
app.get('/invite/:inviteId', inviteHandler);
其中tokenHandler
和inviteHandler
是适当格式化的回调函数。