请解释 Express 的中间件 (Middleware) 的概念和用法。如何创建和使用中间件?

推荐答案

什么是 Express 中间件?

Express 中间件是在请求和响应之间执行的函数。它可以访问请求对象 (req)、响应对象 (res) 以及应用程序的请求-响应周期中的下一个中间件函数 (next)。中间件可以执行以下任务:

  • 执行任何代码。
  • 修改请求和响应对象。
  • 结束请求-响应周期。
  • 调用堆栈中的下一个中间件。

如何创建和使用中间件?

  1. 创建中间件: 中间件是一个函数,通常接受三个参数:reqresnext。例如:

  2. 使用中间件: 中间件可以通过 app.use()app.METHOD() 方法添加到 Express 应用中。例如:

    -- -------------------- ---- -------
    ----- ------- - -------------------
    ----- --- - ----------
    
    ---------------------- -- -------
    
    ------------ ----- ---- -- -
        --------------- --------
    ---
    
    ---------------- -- -- -
        ------------------- -- ------- -- ---- -------
    ---
  3. 路由级中间件: 中间件也可以应用于特定的路由。例如:

  4. 错误处理中间件: 错误处理中间件有四个参数:errreqresnext。例如:

本题详细解读

中间件的执行顺序

中间件的执行顺序非常重要。Express 会按照中间件添加的顺序依次执行它们。如果某个中间件没有调用 next(),请求-响应周期将在此终止,后续的中间件将不会被执行。

中间件的类型

  1. 应用级中间件: 通过 app.use()app.METHOD() 绑定到应用实例上的中间件。

  2. 路由级中间件: 通过 router.use()router.METHOD() 绑定到路由实例上的中间件。

  3. 错误处理中间件: 专门用于处理错误的中间件,通常放在所有其他中间件之后。

  4. 内置中间件: Express 提供的内置中间件,如 express.static 用于提供静态文件。

  5. 第三方中间件: 通过 npm 安装的第三方中间件,如 body-parser 用于解析请求体。

中间件的常见用途

  • 日志记录:记录每个请求的详细信息。
  • 身份验证:验证用户身份。
  • 请求体解析:解析请求体中的数据。
  • 错误处理:捕获和处理错误。

示例代码

-- -------------------- ---- -------
----- ------- - -------------------
----- --- - ----------

-- ------
------------- ---- ----- -- -
    -------------------- ------ -----------------
    -------
---

-- ------
---------------- ----- ---- ----- -- -
    ----------------- --------
    -------
-- ----- ---- -- -
    -------------- -------
---

-- -------
------------- ---- ---- ----- -- -
    -------------------------
    ------------------------------- ---------
---

---------------- -- -- -
    ------------------- -- ------- -- ---- -------
---
纠错
反馈