Axios 拦截器
Axios 请求/响应拦截器的链式处理方式、注册顺序与常见用法。
#type / concept
#status / growing
#tech / network
#platform / browser
#resource / http
#resource / javascript
#package / axios
[!info] related notes
- 所属 MOC: HTTP 与前端网络请求
- 上位概念: Axios
- 前置概念: Axios 实例
- 并列概念: Axios 错误模型, Axios 请求配置
- 相关实践: Axios 封装实践, 前端HTTP状态码的处理
Axios 拦截器
一句话定义
拦截器是在请求发出前和响应进入业务前插入的一层链式处理逻辑。
核心内容
请求拦截器
- 请求前注入 token、语言、traceId
- 请求前做参数预处理
- 请求前做去重、节流、日志
响应拦截器
- 统一提取
response.data - 统一处理 401/403/5xx
- 统一把后端业务 code 转成前端错误对象
使用方式
const id = api.interceptors.request.use(
config => config,
error => Promise.reject(error)
)
api.interceptors.request.eject(id)
链式直觉
- 请求拦截器会进入真正请求之前的 Promise 链
- 响应拦截器会进入真正响应之后的 Promise 链
- 需要明确顺序时,不要依赖“看起来会自动对齐”
顺序规则
- 请求拦截器通常是后注册的先执行
- 响应拦截器通常是先注册的先执行
- 这会影响鉴权、日志和错误归一化的层次
边界与易混淆点
- 拦截器不是中间件服务器,但很像 AOP 切面
use和eject要配套使用- 拦截器里不要做阻塞式重逻辑
最短记忆方式
- 请求前拦一次,响应前再拦一次
- 常用于鉴权、错误处理、日志和重试