文件职责
HTTP请求拦截器,为所有API请求提供统一的认证、日志和错误处理。
实现方式
使用 axios拦截器机制:
- 创建配置好基础URL的axios实例
- 注册请求拦截器处理认证和请求头
- 注册响应拦截器处理日志和错误
- 通过EventEmitter处理token过期事件
实现思路
请求拦截 - 认证注入:
- 根据系统模式(正常/应急)选择不同的token
- 添加统一的请求头(Authorization、Language、Product、Source)
- 记录详细的请求日志
响应拦截 - 日志和错误处理:
- 记录所有响应的详细信息
- 识别业务错误(code !== '0x000000')
- 捕获网络错误和HTTP错误
Token过期处理:
- 检测特定错误码(0x000101)
- 通过EventEmitter发送token过期事件
- 挂起当前请求,防止后续操作
边界
输入边界
- Redux Store状态:用户信息、产品信息、系统模式
- API请求配置:url、method、data、params
输出边界
- 增强的axios实例(包含拦截器)
- 事件发射:tokenExpired事件
- 控制台日志:请求和响应的详细信息
职责边界
- ✅ 负责:请求拦截、响应拦截、认证注入、日志记录、错误标识
- ❌ 不负责:具体API调用、业务逻辑处理、UI展示、token刷新
涉及概念
- axios:HTTP客户端库
- Interceptor Pattern:拦截器模式
- Request Interceptor:请求拦截器
- Response Interceptor:响应拦截器
- Bearer Token:Bearer令牌认证
- HTTP Headers:HTTP请求头
- Authorization:授权认证
- Redux Store:状态管理容器
- System Mode:系统模式(正常/应急)
- EventEmitter:事件发射器
- Token Expiration:令牌过期
- Promise Suspension:Promise挂起(阻止后续执行)
- Error Code:错误码(十六进制格式)
- Logging:日志记录