express的router.use和router.all有什么区别?

发布于 2022-09-07 23:38:08 字数 797 浏览 6 评论 0

测试了拦截路由,设置跨域两者效果一样:
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

零度° 2022-09-14 23:38:08

跨域和路由拦截有共同点,就是针对所有的任何形式的请求,所以一般用router.all(),而router.use()主要是针对指定路径下中间件的处理,当然它也可以用来匹配任意的路径,但它用于表示针对所有的请求时,必须在其他路由前使用。

彻夜缠绵 2022-09-14 23:38:08

express有两种添加中间件的方式

  1. app.use 添加普通中间件
  2. app[method] 添加路由中间件

当你用router.use的时候相当于添加的普通中间件,会在Router栈中添加一个Layer对象(保存中间件函数信息的对象);
当你用router.all(*)的时候相当于添加路由中间件,其在Router栈中添加的Layer对象保存的是路由中间件的路由或者说指针,真正的路由中间件会添加到Route栈中。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文