13 中间件之5.1 什么是中间件
在前面的章节中,我们讨论了如何使用路由来处理请求。在了解了动态路由的方式后,接下来我们将重点探讨Express.js
中的中间件概念。
什么是中间件?
中间件
是Express.js
应用程序中的一个核心概念,它是一个函数,能够访问请求对象(req
)、响应对象(res
)以及应用程序请求-响应循环中的下一个中间件函数。中间件可以执行一些代码、修改请求和响应对象、结束请求-响应循环,或调用下一个中间件。
中间件的管道
可以将中间件想象成一个处理请求的管道。每当一个请求到达服务器,Express
都会遍历这个管道中的每个中间件,依次执行。只有当前一个中间件调用了next()
函数,控制权才会传递到下一个中间件。
中间件的分类
中间件通常可以分为以下几类:
- 应用级中间件:绑定到
express
应用的实例上。 - 路由级中间件:绑定到某个路由的
express.Router()
实例上。 - 错误处理中间件:专门用来处理错误的中间件。
- 内置中间件:
Express
提供的中间件。 - 第三方中间件:社区或用户开发的中间件。
在本节中,我们会专注于了解应用级中间件的工作原理和使用方法。
创建简单的中间件
一个最基本的中间件示例如下:
1 | const express = require('express'); |
在上面的例子中,我们创建了一个名为myMiddleware
的中间件,它会打印每次请求的路径。当请求到达时,myMiddleware
会被调用,然后执行next()
将控制权传递给下一个中间件或路由处理程序。
中间件的执行顺序
中间件的执行顺序通常是自上而下的,也就是说,先定义的中间件先执行。为了更清晰地演示这一点,我们可以添加多个中间件:
1 | const express = require('express'); |
在这个示例中,当客户端请求根路径时,首先会输出“第一个中间件”,然后是“第二个中间件”,最后返回“你好,世界!”。
总结
本节介绍了中间件的基本概念,它们在Express.js
应用中的重要性,以及如何利用中间件来处理请求和响应。中间件为Express.js
提供了强大的功能,可以实现诸如日志记录、请求验证、请求体解析等多种功能。
在接下来的章节中,我们将进一步探讨Express
提供的内置中间件,以及如何使用它们来优化我们的应用。
13 中间件之5.1 什么是中间件