Express.js 中使用中间件

阅读时长 5 分钟读完

中间件是在处理请求过程中可以进行一些额外操作的功能模块,可以用于处理请求、验证数据、打印日志等等。在 Express 中使用中间件非常方便,在页面处理前或者后做一些事情都可以通过中间件实现。本文将详细讲述在 Express 中如何使用中间件并给出相应示例代码。

中间件的基本结构

在 Express 中,每个中间件是一个 JavaScript 函数,该函数有 3 个参数:request 对象、response 对象和 next 函数。

Express 中的中间件,其实就是一个接收请求和响应的函数,这个函数有权访问请求和响应对象,并且可以进行一些操作之后手动调用 next() 函数将请求交给下一个中间件或路由处理器。

使用中间件

在 Express 中使用中间件,可以通过 app.use()app.all()router.all() 等多种方式。其中 app.use() 是最为常用的方式,使用前需要先导入 Express。

使用 app.use() 注册全局中间件

可以使用 app.use() 注册一个全局的中间件,这个中间件将在每个请求中都被执行。全局中间件的基本结构如下:

app.use() 注册了一个全局中间件,当请求到来时就会被执行。其中, next() 函数会将控制权传递到下一个中间件或路由处理器。如果不调用 next() ,那么请求将会挂起不再响应。

简单的打印 hello world 示例

在每一个请求中都会执行这个函数,打印一段 hello world! 的字符串。

使用 app.use() 注册局部中间件

局部中间件是可以针对路由或路径单独设定的中间件,只针对特定请求路径起作用。和全局中间件相比,局部中间件只会在请求该路径时执行。

它只对以 /users 开头的请求起作用。

通过设置 HTTP 头信息的中间件示例

该中间件会在处理 /users 路径及其子路径时,将响应头信息的 Content-Type 设置为 JSON 格式。

使用 router.all() 注册路由中间件

使用路由中间件比较直观,其基本语法如下:

其中, router.all() 可以匹配任何 HTTP 请求方法,不管是 GET、POST、PUT还是 DELETE 请求,都可以被匹配。

路由中间件打印请求路径

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

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

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

然后通过 app.use() 调用这个路由:

当访问 /users 的时候,后台会打印一条访问路径信息。

异常处理中间件

异常处理中间件是一个可以捕获并处理错误的中间件,其回调函数中的第四个参数 err 才是真正的 Error 对象:

通过设置异常处理中间件返回错误信息

像这样定义了一个错误处理中间件,当某个中间件或路由出现 error 参数的时候,就会自动调用由 app.use() 注册的 errorHandler() 函数。

总结

本文详细介绍了在 Express.js 中如何使用中间件,包括全局中间件、局部中间件、路由中间件和异常处理中间件。在使用中间件的过程中,常常会涉及到异步操作,是需要开发者注重谨慎把握,建议细心阅读 Express 官方文档。

通过这篇文章我们可以理解:

  • 了解了中间件的基本结构
  • 理解了如何使用不同类型的中间件
  • 掌握了在中间件处理函数中执行异步操作的用法
  • 掌握了如何通过异常处理中间件对错误进行捕获和处理,以及如何返回错误信息。

中间件是 Express 框架设计的核心,合理使用中间件,能够提高代码层级的抽象度,增加代码的可读性,可拓展性以及可维护性等诸多方面都有极大的好处,这也是为什么要深入学习中间件的一个重要原因。

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

纠错
反馈