express的router.use和router.all有什么区别?
测试了拦截路由,设置跨域两者效果一样:
index.js:
router.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
const url=req.url
if (url.indexOf('test')!=-1){
return res.json('test')
}
next();
});
...
router.all('*',function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
const url=req.url
if (url.indexOf('test')!=-1){
return res.json('test')
}
next();
});
...
本地测试的,两者有什么区别,应该使用哪种?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
跨域和路由拦截有共同点,就是针对所有的任何形式的请求,所以一般用router.all(),而router.use()主要是针对指定路径下中间件的处理,当然它也可以用来匹配任意的路径,但它用于表示针对所有的请求时,必须在其他路由前使用。
express有两种添加中间件的方式
当你用router.use的时候相当于添加的普通中间件,会在Router栈中添加一个Layer对象(保存中间件函数信息的对象);
当你用router.all(*)的时候相当于添加路由中间件,其在Router栈中添加的Layer对象保存的是路由中间件的路由或者说指针,真正的路由中间件会添加到Route栈中。