Javascript 为什么添加get参数会强制中间件执行
我有一个这样的中间件Javascript 为什么添加get参数会强制中间件执行,javascript,node.js,express,middleware,Javascript,Node.js,Express,Middleware,我有一个这样的中间件 //路由中间件以验证令牌 应用程序使用(功能(请求、恢复、下一步){ console.log(请求baseUrl); //检查令牌的标头、url参数或post参数 var token=req.body.token | | req.query.token | | | req.headers['x-access-token']; //解码令牌 如果(令牌){ //验证机密并检查exp jwt.verify(令牌,app.get('superSecret'),函数(err,de
//路由中间件以验证令牌
应用程序使用(功能(请求、恢复、下一步){
console.log(请求baseUrl);
//检查令牌的标头、url参数或post参数
var token=req.body.token | | req.query.token | | | req.headers['x-access-token'];
//解码令牌
如果(令牌){
//验证机密并检查exp
jwt.verify(令牌,app.get('superSecret'),函数(err,decoded){
如果(错误){
返回res.json({
成功:错,
消息:“验证令牌失败。”
});
}否则{
//如果一切正常,请保存以请求在其他路线中使用
req.decoded=已解码;
next();
}
});
}否则{
//如果没有代币
//返回错误
返回资源状态(403)。发送({
成功:错,
消息:“未提供令牌。”
});
}
});代码>发现问题在于调用路由的方式。谢谢你的帮助
查询参数为?id=123
的请求与/:id
不匹配。它应该被称为verifyAccount/123
因为,路由?id=123
与任何路径都不匹配。因此,最终到达中间件
执行
位置决定参数,而不是名称。该名称仅在节点代码中用于引用参数
对于多个参数,我们将使用多个斜杠,如verifyAccount/:id/:otherParameter
,使用verifyAccount/123/234
调用这些斜杠。我设置了一个非常基本的示例(仅为每个路由和中间件提供console.log输出)。我可以看出中间件从未被调用过。只有当请求“滴落”到它的未知路径时,才会调用它。你的代码肯定出了什么问题。啊,这是你的错误。查询参数为?id=123
的请求与/:id
不匹配。它应该是verifyAccount/123
instead@devnull69如果我的参数名是p1
,那么我将如何调用它?相同。位置决定参数,而不是名称。该名称仅在节点代码中用于引用参数您将有多个斜杠,如verifyAccount/:id/:otherParameter
,使用verifyAccount/123/234