Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何验证API调用中是否存在参数_Javascript_Node.js_Express - Fatal编程技术网

Javascript 如何验证API调用中是否存在参数

Javascript 如何验证API调用中是否存在参数,javascript,node.js,express,Javascript,Node.js,Express,我已经设置了中间件来检查API调用中是否存在必需的参数。问题是,如果参数丢失,我的中间件永远不会被调用。我只是得到一个通用的404错误,因为无法识别路由。我正试图找出我遗漏了什么: routes.js: router.get('/players/:id/info', middleware.params.ensureExist, info.index ); /中间件/params.js: var ensureExist = function(req, res, next) { var

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

routes.js:

router.get('/players/:id/info',
  middleware.params.ensureExist,
  info.index
);
/中间件/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”
上才能匹配这两种情况。

对不起,这只是我的一个输入错误。现在修好了。哎呀,这应该是一个评论,而不是一个答案!我怪我的手机。改成了我的实际答案,很抱歉。