在 Node.js 中,拦截请求通常是通过中间件来实现的。中间件是一种函数,它可以访问请求对象 (req)、响应对象 (res) 以及应用程序的请求-响应周期中的下一个中间件函数 (next)。中间件可以执行以下任务:
中间件:在 Node.js 的 Express 框架中,中间件是一种处理请求和响应的函数。它们可以用来执行各种任务,如解析请求体、记录日志、处理身份验证等。
app.use()
或 app.METHOD()
使用。router.use()
或 router.METHOD()
使用。(err, req, res, next)
。express.json()
和 express.urlencoded()
。以下是一个简单的 Express 应用程序,展示了如何使用中间件来拦截请求并记录日志:
const express = require('express');
const app = express();
// 自定义中间件,用于记录请求日志
app.use((req, res, next) => {
console.log(`${req.method} ${req.url} - ${new Date().toISOString()}`);
next(); // 调用下一个中间件
});
// 路由处理
app.get('/', (req, res) => {
res.send('Hello World!');
});
// 错误处理中间件
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something broke!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
问题:中间件没有按预期执行。
原因:
next()
函数可能没有被调用,导致请求-响应周期提前结束。解决方法:
next()
函数,除非你想提前结束请求-响应周期。问题:中间件中的错误没有被捕获。
原因:
解决方法:
(err, req, res, next)
。通过以上信息,你应该能够理解 Node.js 中请求拦截的基本概念,并能够在实际开发中应用中间件来处理请求。
领取专属 10元无门槛券
手把手带您无忧上云