Skip to content
Netflix - 每月低至 25 元

第7章 中间件

一个简单的中间件

  • Express的中间件,本质上就是一个function处理函数,Express中间件的格式如下:

    js
    // 中间件函数的形参列表中,必须包含next参数
    // 而路由处理函数中只包含req和res
    app.get('/', (req, res, next) => {
        next();
    });
  • next函数是实现多个中间件连续调用的关键,它表示把流转关系转交给下一个中间件或路由

全局生效的中间件

  • 客户发起的任何请求,到达服务器之后,都会触发的中间件,叫做全局生效的中间件。

  • 通过 app.use(中间件函数),即可定义一个全局生效的中间件

  • 多个中间件共享同一份req和res

  • 可以通过 app.use() 连续定义多个全局中间件

    js
    const mw = function(req,res,next) {
        console.log('这是一个中间件函数');
        next();
    }
    
    // 将mw注册为全局生效的中间件
    app.use(mw);
    
    // 简化写法
    app.use(function (req, res, next) {
        console.log('这是一个中间件函数');
        next();
    })

局部生效的中间件

  • 不使用 app.use()定义的中间件,叫做局部生效的中间件

    js
    const mw = function (req, res, next) {
        console.log('这是一个中间件函数');
        next();
    }
    
    // 局部生效的中间件,仅在该路由下生效
    app.get('/', mw, function (req, res) {
        res.send('Home Page.')
    })
    
    //在其他路由中不会生效
    app.get('/about', function (req, res) {
        res.send('About Page.')
    })

中间件的分类

  • 应用级别中间件

    • 通过 app.use()app.get()app.post() ,绑定到app实例上的中间件,叫做应用级别的中间件
  • 路由级别中间件

    • 绑定到 express.Router() 实例上的中间件,叫做路由级别的中间件。它的用法和应用级别中间件没有任何区别。
  • 错误级别中间件

    • 作用:专门用来捕获整个项目中发生的异常错误,从而防止项目异常崩溃的问题。

    • 格式:必须有4个形参,形参从前到后,分别是 (err, req, res, next)

    • js
      // 放置到所有路由之后
      app.use(function (err, req, res, next) {
          console.log('发生了错误:' + err.message);
          res.send('Error!' + err.message);
      });
  • Express内置中间件

    • express.static 快速托管静态资源的内置中间件
      • app.use(express.static('public'));
    • express.json 解析JSON格式的请求体数据
      • app.use(express.json());
    • express.urlencoded 解析
      • app.use(express.urlencoded({ extentded: false }));
  • 第三方中间件

    • 非Express官方内置的,而是由第三方开发出来的中间件,叫做第三方中间件。在项目中,可以按需下载并配置第三方中间件,从而提高项目的开发效率
关注微信公众号搬瓦工 - 美国 CN2 优化线路
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0

预览:

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3