Node.js nodejs express通配符路由不工作
我正在nodejs中使用express作为路由器进行API开发 现在,我正在尝试实现一个客户端id和一个apikey,以便为API添加一些安全性,我面临的问题是下一个: 我的一个API调用如下所示:Node.js nodejs express通配符路由不工作,node.js,express,wildcard,Node.js,Express,Wildcard,我正在nodejs中使用express作为路由器进行API开发 现在,我正在尝试实现一个客户端id和一个apikey,以便为API添加一些安全性,我面临的问题是下一个: 我的一个API调用如下所示: router.get(“角色/获取对象/:邮件/:过滤器*?”) 这意味着,我可以请求这样一个对象: /roles/get对象/mail@mail.com/客户 现在棘手的部分开始了。。。当我需要建立一个中间件来读取客户机id和一个apikey来验证客户机是否有权使用API时,我这样做了: 在中间件
router.get(“角色/获取对象/:邮件/:过滤器*?”)
这意味着,我可以请求这样一个对象:
/roles/get对象/mail@mail.com/客户
现在棘手的部分开始了。。。当我需要建立一个中间件来读取客户机id和一个apikey来验证客户机是否有权使用API时,我这样做了:
在中间件声明中,我使用以下通配符:
router.all('/*',函数(req,res,next){
XXXX})
问题是,我在中间件中尝试过,作为通配符的一切。。。
我希望任何API调用都通过该中间件进行过滤,但显然我找不到合适的通配符
当我使用/roles/*作为通配符时,如果我请求/roles
,它确实可以工作,但是当我使用完整的URL时,比如:/roles/get objects/mail@mail.com/客户
它不会通过我的中间件
有人知道吗?我开始失去理智了
非常感谢你们所有人
编辑:
现在,我使用以下中间件声明:
router.use(函数(req,res,next){XXXX}
所以当我打电话时:
/roles/get objects/
它已执行,问题是当我将电子邮件添加到路由时:
/roles/get对象/mail@mail.com
该应用程序直接进入我的路径,但忽略了我的中间件:
router.get(“角色/获取对象/:邮件”
我不明白为什么会发生这种情况,显然所有事情都应该首先通过我的中间件,还是我错了?如果要建立一个中间件来检查URL以
/roles/
开头的所有HTTP请求,中间件应该放在任何其他特定路由器定义之前:
router.use('/roles', function(req, res, next) {...});
...
router.get('/roles/get-objects/:mail', ...);
如果中间件是在特定路由后定义的,当HTTP请求传入时,特定路由被定位并处理,中间件将不再执行:
router.get('/roles/get-objects/:mail', ...);
...
router.use('/roles', function(req, res, next) {...}); // This middleware logic won't execute when request is sent to '/roles/get-objects/some-email', as the request has already been handled and response is already sent to browser.
是不允许使用@符号吗?@lumio
@
是允许的,请检查酷!学到了一些新东西。谢谢:这就是问题所在,我先声明get,然后声明中间件!非常感谢:)