我怎样才能更明确地使用快速路由器参数

时间:2015-01-21 19:24:11

标签: node.js express

我目前有一些路由器路由

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 有关详细说明

1 个答案:

答案 0 :(得分:1)

路线顺序定义很重要,因此最佳做法是从最具体到最大的抓取。

app.get('/invite/token/:token', tokenHandler);
app.get('/invite/:inviteId', inviteHandler);

其中tokenHandlerinviteHandler是适当格式化的回调函数。