简介 Middleware 在 Express.js
Middleware in Express.js 是一个强大的概念,允许您在请求-响应生命周期中按特定顺序执行函数。 这些函数可以执行各种任务,例如身份验证、日志记录、数据验证等。 Middleware 函数按顺序执行,每个函数都 middleware 可以访问 request
和 response
对象,以及 next
将控制权传递给 middleware 堆栈中下一个函数的函数。
为什么使用 Middleware ?
Middleware 对于模块化应用程序的功能和增强其可维护性至关重要。 它使您能够保持路由处理程序干净并专注于特定任务,同时将常见或横切关注点转移到 middleware 功能上。 这种关注点分离提高了代码的可重用性,并使您的代码库更有条理。
创建和使用 Middleware
middleware 要在 中 创建 Express.js,您需要定义一个采用三个参数的函数: request
、 response
和 next
。
middleware 这是记录每个传入请求 的基本示例:
const logMiddleware =(req, res, next) => {
console.log(`Received a ${req.method} request at ${req.url}`);
next(); // Pass control to the next middleware
};
app.use(logMiddleware);
您可以使用该 app.use()
方法全局应用于 middleware 所有路由,也可以有选择地应用于特定路由。
Middleware 执行 顺序
Middleware 函数按照使用 定义的顺序执行 app.use()
。
例如:
app.use(middleware1);
app.use(middleware2);
在这种情况下,将 在所有传入请求 middleware1
之前执行。 middleware2
处理错误 Middleware
如果函数内发生错误 middleware,可以将错误传递给函数 next
,函数 Express.js 会自动跳转到错误处理 middleware。
这是一个例子:
const errorMiddleware =(err, req, res, next) => {
console.error(err);
res.status(500).send('Something went wrong!');
};
app.use(errorMiddleware);
用于 Middleware 身份验证
Middleware 通常用于在 Web 应用程序中实现身份验证和授权。 例如,您可以创建一个 middleware 函数,在允许访问某些路由之前检查用户是否经过身份验证:
const authenticateMiddleware =(req, res, next) => {
if(req.isAuthenticated()) {
return next(); // User is authenticated, proceed to the next middleware
}
res.redirect('/login'); // User is not authenticated, redirect to login page
};
app.get('/profile', authenticateMiddleware,(req, res) => {
res.send('Welcome to your profile!');
});
结论
Middleware in Express.js 是管理和增强 Web 应用程序功能的重要工具。 通过创建可重用的 middleware 函数,您可以简化代码、模块化关注点并提高项目的整体可维护性。 从处理身份验证到日志记录和错误管理, middleware 使您能够高效构建健壮且安全的 Web 应用程序。