Express 中如何定义中间件?

· 约 4 分钟读完 · 第 11 / 120 章

推荐答案

在 Express 中,可以通过 app.use() 或 app.METHOD() 方法来定义中间件。中间件是一个函数,它可以访问请求对象 (req)、响应对象 (res) 以及应用程序的请求-响应循环中的下一个中间件函数 (next)。

使用 app.use() 定义中间件

使用 app.METHOD() 定义中间件

本题详细解读

中间件的作用

中间件在 Express 中扮演着非常重要的角色,它可以执行以下任务:

  1. 执行任何代码:中间件可以执行任何代码,例如日志记录、身份验证等。
  2. 修改请求和响应对象:中间件可以修改 req 和 res 对象,例如添加自定义属性或修改头信息。
  3. 结束请求-响应循环:中间件可以通过调用 res.send() 或 res.end() 来结束请求-响应循环。
  4. 调用下一个中间件:中间件可以通过调用 next() 将控制权传递给下一个中间件。

中间件的类型

  1. 应用级中间件:通过 app.use() 或 app.METHOD() 绑定到 app 对象上的中间件。
  2. 路由级中间件:通过 router.use() 或 router.METHOD() 绑定到 express.Router() 实例上的中间件。
  3. 错误处理中间件:专门用于处理错误的中间件,通常有四个参数 (err, req, res, next)。
  4. 内置中间件:Express 提供的内置中间件,例如 express.static。
  5. 第三方中间件:通过 npm 安装的第三方中间件,例如 body-parser。

中间件的执行顺序

中间件的执行顺序非常重要,Express 会按照中间件定义的顺序依次执行。如果某个中间件没有调用 next(),那么后续的中间件将不会被执行。

示例:多个中间件的执行顺序

在这个例子中,当访问 / 路由时,控制台会依次输出 First middleware 和 Second middleware,然后才会发送响应 Hello World!。