Express.js 中间件

2024 年 8 月 29 日 | 阅读 3 分钟

Express.js 中间件是不同类型的函数,它们在最终请求处理程序之前被 Express.js 路由层调用。正如名称所指定的那样,中间件出现在初始请求和最终预期路由之间。在堆栈中,中间件函数总是按照添加的顺序调用。

中间件通常用于执行诸如 URL 编码或 JSON 请求的 body 解析、基本 cookie 处理的 cookie 解析,甚至是动态构建 JavaScript 模块之类的任务。


什么是中间件函数

中间件函数是可以访问请求-响应周期中的请求和响应对象 (req, res) 的函数。

一个中间件函数可以执行以下任务

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

Express.js 中间件

以下是 Express.js 应用中可能使用的中间件列表

  • 应用级中间件
  • 路由级中间件
  • 错误处理中间件
  • 内置中间件
  • 第三方中间件

让我们举个例子来了解什么是中间件以及它是如何工作的。

让我们采用最基本的 Express.js 应用

文件:simple_express.js

MiddleWare 1

您会看到服务器正在监听。

现在,您可以在本地主机http://127.0.0.1:8000上看到服务器生成的结果

输出

MiddleWare 2

让我们看看下一页:http://127.0.0.1:8000/help

输出

MiddleWare 3 MiddleWare 4

注意:您会看到命令提示符没有改变。这意味着,虽然在 http://127.0.0.1:8000/help 页面中处理了一个 GET 请求,但它没有显示任何 GET 请求的记录。

Express.js 中间件的使用

如果您想记录每次收到请求,则可以使用中间件。

请看这个例子

文件:simple_middleware.js

MiddleWare 5

您会看到服务器正在监听。

现在,您可以在本地主机http://127.0.0.1:8000上看到服务器生成的结果

输出

MiddleWare 6

您可以看到输出是相同的,但命令提示符正在显示 GET 结果。

MiddleWare 7

转到 http://127.0.0.1:8000/help

MiddleWare 8 MiddleWare 9

您重新加载页面的次数越多,命令提示符就会更新。

MiddleWare 10

注意:在上面的示例中使用了 next() 中间件。

中间件示例解释

  • 在上面的中间件示例中,使用app.use() 通过每个请求调用一个新函数。
  • 中间件是一个函数,就像路由处理程序一样,也以类似的方式调用。
  • 您可以使用相同的 API 在上方或下方添加更多中间件。
下一个主题ExpressJS 脚手架