返回
初探 Node.js Express 中间件
前端
2023-12-02 22:48:48
今天我们继续探索 Node.js Express 中间件,深入了解其工作原理和常见用法。
1. 中间件简介
中间件是 Express 提供的一种特殊 URL 地址处理函数,它在请求到达路由处理函数之前执行。中间件可以完成各种任务,例如:
-
解析请求主体:
- express.json() 和 express.urlencoded() 中间件可用于解析请求主体。
-
身份验证和授权:
- 您可以使用中间件来验证传入请求的令牌,或根据用户角色授权他们访问特定资源。
-
记录和日志记录:
- 您可以在中间件中记录请求信息,以帮助您调试和排除错误。
-
添加 headers:
- 您可以在中间件中为响应添加 headers,例如
Content-Type
或Cache-Control
headers。
- 您可以在中间件中为响应添加 headers,例如
2. 中间件的使用
您可以通过在 Express 应用程序中使用 app.use()
方法来使用中间件。您可以将中间件作为单独的函数传递给 app.use()
,或使用内联箭头函数。
以下是一个使用中间件记录请求信息的示例:
app.use((req, res, next) => {
console.log(`Received request for ${req.method} ${req.url}`);
next();
});
3. 中间件类型
Express 提供了几种内置的中间件,包括:
express.json()
: 解析 JSON 请求主体。express.urlencoded()
: 解析 URL 编码的请求主体。express.cookieParser()
: 解析 Cookie。express.session()
: 管理用户会话。express.static()
: 提供静态文件服务。
4. 自定义中间件
您还可以创建自己的自定义中间件。自定义中间件可以完成各种任务,例如:
-
验证请求:
- 您可以创建自定义中间件来验证传入请求的令牌,或根据用户角色授权他们访问特定资源。
-
记录和日志记录:
- 您可以在自定义中间件中记录请求信息,以帮助您调试和排除错误。
-
添加 headers:
- 您可以在自定义中间件中为响应添加 headers,例如
Content-Type
或Cache-Control
headers。
- 您可以在自定义中间件中为响应添加 headers,例如
以下是一个创建自定义中间件来验证请求的示例:
const auth = (req, res, next) => {
const token = req.headers['authorization'];
if (!token) {
return res.status(401).json({ error: 'Unauthorized' });
}
try {
const decoded = jwt.verify(token, process.env.JWT_SECRET);
req.user = decoded;
next();
} catch (error) {
return res.status(401).json({ error: 'Unauthorized' });
}
};
然后,您可以使用 app.use()
方法将自定义中间件应用到 Express 应用程序:
app.use(auth);
5. 结论
中间件是 Express 提供的一种强大工具,可用于扩展框架并使其更具灵活性。您可以使用中间件来完成各种任务,例如解析请求主体、验证请求、记录请求信息等等。
在实际项目中,中间件经常被用来实现跨域资源共享 (CORS)、身份验证和授权、请求日志记录、缓存等功能。如果您想了解有关 Express 中间件的更多信息,请查看 Express 文档。