Express.js 中间件是特殊的函数,它们在处理 HTTP 请求时扮演着关键角色。每个中间件函数都接收三个参数:请求对象 (req)、响应对象 (res) 和 next 函数。与普通的路由处理程序不同,中间件在主业务逻辑之前执行,从而控制应用程序的流程。
中间件的工作原理
当 HTTP 请求到达 Express.js 服务器时,它会依次经过一系列中间件函数。每个中间件都可以:
如果中间件不调用 next(),则请求-响应周期在此终止,后续逻辑(包括路由处理程序)将不会执行。
为什么要使用中间件?
中间件非常适合在处理请求之前添加可重用的逻辑,例如:
定义和使用中间件
中间件函数的定义如下:
app.use((req, res, next) => { // 在此处添加你的逻辑 next(); // 将控制权传递给下一个中间件或路由处理程序 });
中间件执行顺序
中间件的执行顺序至关重要!Express.js 按照定义的顺序依次执行中间件。如果中间件定义在路由之后,则不会影响该路由。因此,必须在 app.js 中的路由定义之前声明中间件。
示例:
// 中间件,用于检查用户是否具有管理员权限 app.use((req, res, next) => { console.log("正在检查管理员角色..."); // 模拟之前在管道中附加的用户对象 if (req.user && req.user.role === "admin") { console.log("访问已授权"); next(); // 转到下一个中间件或路由处理程序 } else { console.log("访问被拒绝"); res.status(403).send("您无权访问此资源。"); } }); // 路由 app.get("/admin/dashboard", (req, res) => { res.send("欢迎来到管理员控制面板!"); }); app.get("/public", (req, res) => { res.send("这是一个公共页面。"); });
内部执行流程
流程如下:
流程示例:
关键要点
以上就是了解 Expressjs 中的中间件及其内部工作原理的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号