13 中间件之5.1 什么是中间件

在前面的章节中,我们讨论了如何使用路由来处理请求。在了解了动态路由的方式后,接下来我们将重点探讨Express.js中的中间件概念。

什么是中间件?

中间件Express.js应用程序中的一个核心概念,它是一个函数,能够访问请求对象(req)、响应对象(res)以及应用程序请求-响应循环中的下一个中间件函数。中间件可以执行一些代码、修改请求和响应对象、结束请求-响应循环,或调用下一个中间件。

中间件的管道

可以将中间件想象成一个处理请求的管道。每当一个请求到达服务器,Express都会遍历这个管道中的每个中间件,依次执行。只有当前一个中间件调用了next()函数,控制权才会传递到下一个中间件。

中间件的分类

中间件通常可以分为以下几类:

  1. 应用级中间件:绑定到express应用的实例上。
  2. 路由级中间件:绑定到某个路由的express.Router()实例上。
  3. 错误处理中间件:专门用来处理错误的中间件。
  4. 内置中间件Express提供的中间件。
  5. 第三方中间件:社区或用户开发的中间件。

在本节中,我们会专注于了解应用级中间件的工作原理和使用方法。

创建简单的中间件

一个最基本的中间件示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const express = require('express');
const app = express();

// 自定义中间件函数
const myMiddleware = (req, res, next) => {
console.log('请求的路径:', req.path); // 打印请求路径
next(); // 调用下一个中间件
};

// 使用中间件
app.use(myMiddleware);

// 路由
app.get('/', (req, res) => {
res.send('你好,世界!');
});

// 启动服务
app.listen(3000, () => {
console.log('服务正在监听 3000 端口');
});

在上面的例子中,我们创建了一个名为myMiddleware的中间件,它会打印每次请求的路径。当请求到达时,myMiddleware会被调用,然后执行next()将控制权传递给下一个中间件或路由处理程序。

中间件的执行顺序

中间件的执行顺序通常是自上而下的,也就是说,先定义的中间件先执行。为了更清晰地演示这一点,我们可以添加多个中间件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const express = require('express');
const app = express();

// 第一个中间件
app.use((req, res, next) => {
console.log('第一个中间件');
next();
});

// 第二个中间件
app.use((req, res, next) => {
console.log('第二个中间件');
next();
});

// 路由处理
app.get('/', (req, res) => {
res.send('你好,世界!');
});

// 启动服务
app.listen(3000, () => {
console.log('服务正在监听 3000 端口');
});

在这个示例中,当客户端请求根路径时,首先会输出“第一个中间件”,然后是“第二个中间件”,最后返回“你好,世界!”。

总结

本节介绍了中间件的基本概念,它们在Express.js应用中的重要性,以及如何利用中间件来处理请求和响应。中间件为Express.js提供了强大的功能,可以实现诸如日志记录、请求验证、请求体解析等多种功能。

在接下来的章节中,我们将进一步探讨Express提供的内置中间件,以及如何使用它们来优化我们的应用。

13 中间件之5.1 什么是中间件

https://zglg.work/expressjs-zero/13/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

复习上节

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论