如何在API调用中validation参数的存在
我已经安装了中间件来检查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
而不是上面的自定义错误信息。
问题是你的中间件只能在包含:id
参数的路由上被调用,因为你已经把它挂载在'/players/:id/info'
。 您需要将其安装在'/players'
以匹配这两种情况。