interceptor.ts.md 2.0 KB

文件职责

HTTP请求拦截器,为所有API请求提供统一的认证日志错误处理

实现方式

使用 axios拦截器机制

  • 创建配置好基础URL的axios实例
  • 注册请求拦截器处理认证和请求头
  • 注册响应拦截器处理日志和错误
  • 通过EventEmitter处理token过期事件

实现思路

  1. 请求拦截 - 认证注入

    • 根据系统模式(正常/应急)选择不同的token
    • 添加统一的请求头(Authorization、Language、Product、Source)
    • 记录详细的请求日志
  2. 响应拦截 - 日志和错误处理

    • 记录所有响应的详细信息
    • 识别业务错误(code !== '0x000000')
    • 捕获网络错误和HTTP错误
  3. 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:日志记录