推荐答案
什么是 Express 中间件?
Express 中间件是在请求和响应之间执行的函数。它可以访问请求对象 (req
)、响应对象 (res
) 以及应用程序的请求-响应周期中的下一个中间件函数 (next
)。中间件可以执行以下任务:
- 执行任何代码。
- 修改请求和响应对象。
- 结束请求-响应周期。
- 调用堆栈中的下一个中间件。
如何创建和使用中间件?
创建中间件: 中间件是一个函数,通常接受三个参数:
req
、res
和next
。例如:const myMiddleware = (req, res, next) => { console.log('This is a middleware'); next(); // 调用下一个中间件 };
使用中间件: 中间件可以通过
app.use()
或app.METHOD()
方法添加到 Express 应用中。例如:-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ---------- ---------------------- -- ------- ------------ ----- ---- -- - --------------- -------- --- ---------------- -- -- - ------------------- -- ------- -- ---- ------- ---
路由级中间件: 中间件也可以应用于特定的路由。例如:
app.get('/special', myMiddleware, (req, res) => { res.send('This is a special route'); });
错误处理中间件: 错误处理中间件有四个参数:
err
、req
、res
和next
。例如:app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send('Something broke!'); });
本题详细解读
中间件的执行顺序
中间件的执行顺序非常重要。Express 会按照中间件添加的顺序依次执行它们。如果某个中间件没有调用 next()
,请求-响应周期将在此终止,后续的中间件将不会被执行。
中间件的类型
应用级中间件: 通过
app.use()
或app.METHOD()
绑定到应用实例上的中间件。路由级中间件: 通过
router.use()
或router.METHOD()
绑定到路由实例上的中间件。错误处理中间件: 专门用于处理错误的中间件,通常放在所有其他中间件之后。
内置中间件: Express 提供的内置中间件,如
express.static
用于提供静态文件。第三方中间件: 通过 npm 安装的第三方中间件,如
body-parser
用于解析请求体。
中间件的常见用途
- 日志记录:记录每个请求的详细信息。
- 身份验证:验证用户身份。
- 请求体解析:解析请求体中的数据。
- 错误处理:捕获和处理错误。
示例代码
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ---------- -- ------ ------------- ---- ----- -- - -------------------- ------ ----------------- ------- --- -- ------ ---------------- ----- ---- ----- -- - ----------------- -------- ------- -- ----- ---- -- - -------------- ------- --- -- ------- ------------- ---- ---- ----- -- - ------------------------- ------------------------------- --------- --- ---------------- -- -- - ------------------- -- ------- -- ---- ------- ---