服务端阅读 02026年5月30日 00:10
如何在 axios 中实现请求和响应拦截器?
Axios 拦截器就是请求发出前、响应返回后统一插一层处理逻辑。请求拦截器常用来加 token、加请求 ID、处理 loading;响应拦截器常用来拆 data、统一处理业务错误、401 登录失效和网络异常。项目里一般不要直接改全局 axios,而是 axios.create() 建实例,再给实例挂拦截器,避免多个后端服务互相污染配置。追问请求拦截器和响应拦截器分别适合做什么?请求拦截器改 config,比如加 Authorization、baseURL、防缓存参数。响应拦截器处理 response 或 error,比如把 { code, data, message } 统一拆成 data 返回。多个拦截器的执行顺序是什么?请求拦截器后添加的先执行,响应拦截器先添加的先执行。排查问题时要注意顺序,否则 token 还没加上,请求日志就已经打印了旧配置。loading 为什么不能简单请求开始显示、结束隐藏?并发请求会出问题。第一个请求结束就隐藏 loading,但其他请求还没回来。常见做法是维护计数器,请求加一,响应或错误减一,减到 0 再隐藏。什么时候要移除拦截器?临时调试、微前端子应用卸载、某个页面单独加拦截逻辑时要 eject,否则重复注册会导致同一个错误提示弹很多次。写段代码const api = axios.create({ baseURL: '/api', timeout: 10000 });api.interceptors.request.use(config => { const token = localStorage.getItem('token'); if (token) config.headers.Authorization = `Bearer ${token}`; return config;});api.interceptors.response.use( res => res.data, err => Promise.reject(err.response?.data || err));