推荐答案
在 Express 中,应用级中间件是指通过 app.use() 或 app.METHOD()(如 app.get()、app.post() 等)绑定到应用程序实例上的中间件函数。这些中间件函数会在每个请求到达时执行,并且可以访问请求对象 (req)、响应对象 (res) 以及下一个中间件函数 (next)。
应用级中间件通常用于处理应用程序级别的逻辑,例如日志记录、身份验证、请求解析等。
本题详细解读
什么是应用级中间件?
应用级中间件是 Express 框架中的一种中间件类型,它直接绑定到 Express 应用程序实例上。与路由级中间件不同,应用级中间件不依赖于特定的路由路径,而是对所有的请求都生效(除非指定了路径)。
如何使用应用级中间件?
应用级中间件可以通过 app.use() 或 app.METHOD() 方法来绑定。以下是一些常见的用法:
使用
app.use()绑定中间件:// www.javascriptcn.com code example const express = require('express'); const app = express(); // 应用级中间件,对所有请求生效 app.use((req, res, next) => { console.log('Time:', Date.now()); next(); }); app.get('/', (req, res) => { res.send('Hello World!'); }); app.listen(3000);在这个例子中,中间件函数会在每个请求到达时执行,记录当前时间,然后调用
next()将控制权传递给下一个中间件或路由处理程序。使用
app.METHOD()绑定中间件:// www.javascriptcn.com code example const express = require('express'); const app = express(); // 应用级中间件,仅对 GET 请求生效 app.get('/', (req, res, next) => { console.log('GET request received'); next(); }); app.get('/', (req, res) => { res.send('Hello World!'); }); app.listen(3000);在这个例子中,中间件函数仅对 GET 请求生效,并且会在处理请求之前执行。
应用级中间件的常见用途
- 日志记录: 记录每个请求的详细信息,如请求时间、请求方法、请求路径等。
- 身份验证: 检查用户是否已登录,如果未登录则重定向到登录页面。
- 请求解析: 解析请求体中的数据,如 JSON、URL 编码数据等。
- 错误处理: 捕获并处理应用程序中的错误。
应用级中间件的执行顺序
应用级中间件的执行顺序与它们在代码中的定义顺序有关。Express 会按照中间件定义的顺序依次执行它们,直到某个中间件不再调用 next() 或者发送响应为止。
// www.javascriptcn.com code example
const express = require('express');
const app = express();
app.use((req, res, next) => {
console.log('First middleware');
next();
});
app.use((req, res, next) => {
console.log('Second middleware');
next();
});
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000);在这个例子中,First middleware 会先于 Second middleware 执行。
总结
应用级中间件是 Express 中非常强大的工具,它允许开发者在请求到达路由处理程序之前或之后执行一些逻辑。通过合理使用应用级中间件,可以有效地管理应用程序的请求处理流程,并实现各种功能需求。