15 自定义中间件
在这一章节,我们将深入探讨如何在 Express.js 中创建和使用自定义中间件。掌握自定义中间件的技巧不仅能增强你对 Express.js 的理解,还能让你为特定需求定制应用程序的逻辑。
中间件概述
在 Express 中,中间件是一种函数,可以访问请求对象(req
)、响应对象(res
)和应用程序的请求-响应周期中的其他中间件。中间件主要用于执行操作,如执行请求数据的处理、验证用户身份、记录请求信息等。
中间件的基本结构
自定义中间件的定义相对简单。一个典型的中间件函数的结构如下:
1 | function customMiddleware(req, res, next) { |
在上面的代码中,customMiddleware
是一个自定义中间件函数,next
是 Express 提供的函数,用于将控制权传递给下一个中间件。
创建并使用自定义中间件
现在,让我们来创建一个简单的自定义中间件,并将其应用到我们的 Express 应用中。
示例:请求时间戳中间件
我们将创建一个自定义中间件,它会在请求过程中记录当前的时间戳。
首先,创建一个新的 Express 应用:
1 | const express = require('express'); |
然后,我们实现我们的自定义中间件:
1 | function timestampMiddleware(req, res, next) { |
接下来,使用 app.use()
方法传播这个中间件:
1 | // 使用自定义中间件 |
然后,我们可以在路由处理程序中访问这个时间戳信息:
1 | app.get('/', (req, res) => { |
最后,启动服务器:
1 | app.listen(PORT, () => { |
代码综述
完整的代码示例如下:
1 | const express = require('express'); |
测试中间件
启动你上面的应用并在浏览器中访问 http://localhost:3000/
,你将会看到类似于以下的输出:
1 | 请求时间: 2023-10-01T12:34:56.789Z |
可以看到,我们的自定义中间件成功地在请求中添加了时间戳信息。
实际应用中的自定义中间件
自定义中间件在实际开发中非常有用,以下是一些常见的应用场景:
- 请求验证:可以验证请求的用户身份,如 JWT 验证。
- 请求优化:可以在处理请求之前进行数据转换或优化。
- 日志记录:记录所有传入请求的详细信息,以便后期分析。
- 错误处理:集中处理错误并向用户返回统一的错误响应。
以下是一个验证中间件的示例:
1 | function authMiddleware(req, res, next) { |
结论
本节中,我们学习了如何创建和使用自定义中间件。中间件不仅能帮助我们简化代码结构,还能重用逻辑,让我们的应用更加模块化。在下一章节中,我们将深入探讨如何处理请求和响应,特别是处理 GET 请求的技巧。通过中间件与处理请求的结合,您会发现 Express.js 的强大与灵活。
15 自定义中间件