2026-07-11 19:07:33
手写中间件通常涉及创建一个函数或对象,该函数或对象可以在请求处理流程中插入自定义逻辑。以下是一个简单的中间件实现示例,使用 JavaScript 和 Node.js 的 Express 框架作为背景:
// 自定义中间件示例function myMiddleware(req, res, next) { // 在这里添加自定义逻辑 console.log('这是一个自定义中间件'); console.log('请求方法:', req.method); console.log('请求路径:', req.path); // 调用 next() 将控制权传递给下一个中间件 next();}// 使用 Express 框架const express = require('express');const app = express();// 应用自定义中间件app.use(myMiddleware);// 定义一个简单的路由app.get('/', (req, res) => { res.send('Hello World!');});// 启动服务器app.listen(3000, () => { console.log('服务器运行在自定义中间件函数:
myMiddleware 是一个中间件函数,它接收 req(请求对象)、res(响应对象)和 next(下一个中间件的函数)作为参数。
在函数内部,可以执行任何自定义逻辑,例如日志记录、身份验证等。
调用 next() 将控制权传递给下一个中间件。
Express 应用:
引入 Express 框架并创建应用实例。
使用 app.use(myMiddleware) 将自定义中间件应用到所有路由。
定义一个简单的 GET 路由 /,返回 "Hello World!"。
启动服务器,监听 3000 端口。
中间件的作用:
中间件可以在请求到达路由处理程序之前或之后执行特定任务。
常见的中间件用途包括日志记录、身份验证、错误处理等。
多个中间件的顺序:
中间件的执行顺序与它们在代码中的定义顺序一致。
例如:
app.use(middleware1);app.use(middleware2);app.get('/', handler);在这种情况下,middleware1 和 middleware2 会在路由处理程序之前依次执行。错误处理中间件:
错误处理中间件与其他中间件类似,但有四个参数:(err, req, res, next)。
示例:
function errorHandler(err, req, res, next) { console.error(err.stack); res.status(500).send('Something broke!');}app.use(errorHandler);接收 req、res 和 next 参数。
执行自定义逻辑。
调用 next() 传递控制权。
通过这种方式,可以灵活地扩展应用程序的功能,同时保持代码的模块化和可维护性。