Express.js 中的中间件应用解析

阅读时长 5 分钟读完

什么是中间件

在 Express.js 中,中间件是指在请求和响应之间进行处理的函数。它们可以访问请求和响应对象,以及应用程序的请求-响应循环中的下一个中间件函数。中间件函数通常用于执行一些常见的任务,例如身份验证、日志记录、错误处理等。

在 Express.js 中,中间件可以是全局的,也可以是路由特定的。全局中间件将在应用程序的所有路由中执行,而路由特定的中间件仅在特定路由中执行。

如何使用中间件

在 Express.js 中,使用中间件非常简单。只需使用 app.use() 方法将中间件函数添加到应用程序中即可。例如:

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

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

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

在这个例子中,我们定义了两个中间件函数。第一个是全局中间件,它将在应用程序的所有路由中执行,并记录请求的时间。第二个是路由特定的中间件,它将在 /user/:id 路由中执行,并记录请求的类型。第二个中间件函数还将向客户端发送响应。

需要注意的是,每个中间件函数都必须调用 next() 方法,以便将控制权传递给下一个中间件函数。如果不调用 next() 方法,请求将被挂起,并且客户端将无法收到响应。

中间件的顺序

在 Express.js 中,中间件的顺序非常重要。中间件将按照它们添加到应用程序中的顺序执行。因此,如果您想要确保某个中间件在其他中间件之前执行,您必须将其添加到应用程序中的相应位置。

例如,如果您想要在所有路由中记录请求的时间,并在 /user/:id 路由中记录请求的类型,您必须按照以下方式定义中间件:

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

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

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

在这个例子中,我们首先定义了记录请求时间的全局中间件,然后定义了处理 /user/:id 路由的中间件。由于中间件将按照它们添加到应用程序中的顺序执行,因此记录请求时间的中间件将在处理 /user/:id 路由的中间件之前执行。

中间件的错误处理

在 Express.js 中,您可以使用中间件来处理错误。如果在中间件中发生错误,您可以使用 next() 方法将控制权传递给错误处理中间件。错误处理中间件将接收错误对象作为第一个参数,并将其发送给客户端。

例如,以下代码演示了如何使用中间件处理错误:

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

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

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

在这个例子中,我们首先定义了处理错误的中间件。如果在后面的中间件中发生错误,控制权将传递给错误处理中间件。错误处理中间件将记录错误并向客户端发送响应。

/user/:id 路由中,我们定义了一个中间件函数,它将检查用户 ID 是否为 0。如果是,则将控制权传递给下一个路由。否则,将抛出一个错误,并将控制权传递给错误处理中间件。

总结

在 Express.js 中,中间件是一种非常有用的工具,可以帮助您执行各种常见的任务,例如身份验证、日志记录、错误处理等。使用中间件非常简单,只需使用 app.use() 方法将中间件函数添加到应用程序中即可。需要注意的是,中间件的顺序非常重要,因为它们将按照它们添加到应用程序中的顺序执行。如果您想要确保某个中间件在其他中间件之前执行,您必须将其添加到应用程序中的相应位置。最后,您可以使用中间件来处理错误。如果在中间件中发生错误,您可以使用 next() 方法将控制权传递给错误处理中间件。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/655875a6d2f5e1655d2a2477

纠错
反馈