Backend Middleware Patterns 后端中间件模式 综合中间件模式,用于处理跨领域关注点,包括认证、日志记录、验证、错误处理和安全性。
中间件函数是可以访问请求对象(req)、响应对象(res)以及应用程序请求-响应循环中的下一个中间件函数的函数。中间件有助于管理跨领域关注点,如认证、日志记录、错误处理和验证。
中间件包括:
- 请求处理:在路由处理程序之前处理传入请求
- 响应处理:在发送给客户端之前修改响应
- 错误处理:跨所有路由的集中错误处理
- 跨领域关注点:认证、日志记录、验证、压缩
- 模块化设计:可组合的中间件链,用于灵活配置
为什么这很重要
- 提高可维护性:集中逻辑减少代码重复
- 增强安全性:跨所有端点的一致安全策略
- 提高可观察性:集中日志记录和监控
- 减少开发时间:可重用的中间件减少样板代码
- 提高一致性:一致的错误处理和验证
核心概念
-
中间件顺序至关重要 正确的顺序:
-
安全头部(第一)
-
CORS
-
日志记录
-
正文解析
-
请求ID
-
速率限制(认证前)
-
认证
-
路由
-
404处理器
-
错误处理器(最后)
-
请求日志记录中间件
-
认证中间件
-
授权中间件
-
错误处理中间件
-
速率限制中间件
-
CORS中间件
-
安全头部中间件
-
请求验证中间件
快速开始
- 安装中间件包: npm install helmet cors morgan express-rate-limit
- 创建基本中间件:
export function loggingMiddleware(req, res, next) {
console.log(
${req.method} ${req.url}) next() } - 注册中间件: app.use(loggingMiddleware)
- 正确排序: app.use(helmet()) app.use(cors()) app.use(authMiddleware) app.use(errorHandler)
生产检查表
- [ ] 按正确顺序配置中间件
- [ ] 使用安全头部(Helmet)
- [ ] 实施适当的CORS配置
- [ ] 添加请求ID以进行跟踪
- [ ] 实施认证中间件
- [ ] 实施授权中间件
- [ ] 添加速率限制
- [ ] 实施输入验证
- [ ] 添加错误处理中间件(最后)
- [ ] 记录所有请求和响应
- [ ] 监控中间件性能
- [ ] 单独测试中间件
- [ ] 使用TypeScript进行类型安全
- [ ] 文档化中间件选项
- [ ] 实施优雅关闭
反模式
- 错误顺序:中间件顺序至关重要(安全第一,错误处理器最后)
- 跳过next():总是调用next()或发送响应
- 阻塞异步:不要阻塞异步操作
- 无错误处理:在中间件中正确处理错误
- 暴露错误:不要向客户端暴露内部错误
- 忽略性能:监控中间件性能影响
- 无测试:为所有中间件编写单元测试
集成点
- Express REST:03-backend-api/express-rest
- Node.js API:03-backend-api/nodejs-api
- 错误处理:03-backend-api/error-handling
- 验证:03-backend-api/validation
- 认证:10-authentication-authorization
- 监控:14-monitoring-observability
进一步阅读
- Express Middleware Guide
- Helmet Documentation
- CORS Documentation