如何在API调用中验证参数的存在

时间:2015-06-19 15:36:15

标签: javascript node.js express

我已经设置了中间件来检查API调用中是否存在必需参数。问题是,如果参数丢失,我的中间件永远不会被调用。我只是得到一个通用404错误,因为无法识别路由。我想弄清楚我错过了什么:

routes.js:

router.get('/players/:id/info',
  middleware.params.ensureExist,
  info.index
);

/middleware/params.js:

var ensureExist = function(req, res, next) {
  var id = req.params && req.params.id;
  if (id) {
    return next();
  } else {
    logger.warn('req.params.id required.', { error: 'Missing req.params.id' });
    return res.status(400).send({ error: 'Missing req.params.id' });
  }
};

GET '/players/56/info'产生预期的响应。 但是,GET '/players/info'只是给我一个通用404而不是上面的自定义错误消息。

1 个答案:

答案 0 :(得分:1)

问题是您的中间件只会在包含:id param的路由上调用,因为您已将其挂载在'/players/:id/info'上。您需要将其安装在'/players'上才能匹配这两种情况。