axios封装拦截器
axios 封装拦截器
#参考文章:
axios 官网:https://axios-http.com/
TypeScript 封装 axios——Vue3+Ts 实践:https://zhuanlan.zhihu.com/p/452946486?utm_id=0
axios 请求及响应拦截理解:https://www.cnblogs.com/caijinghong/p/14120244.html)https://www.cnblogs.com/caijinghong/p/14120244.html?ivk_sa=1024320u
一,为什么要封装
项目中会有很多的模块都需要发送网络请求,导致每个模块对 axios 依赖性太强,即每个模块都和一个第三方库耦合度较高
在我们发送网络请求的时候,往往会有很多共同的特性,比如在请求头中添加 token,展示一个 loading
二,拦截器简介
拦截器主要分为两种,请求拦截器和响应拦截器。
请求拦截器:请求发送之前进行拦截,应用于我们在请求发送前需要对请求数据做一些处理。例如: - 携带 token - 当请求时间过长时,设置 loading
响应拦截器:在响应到达时进行拦截,应用于在我们业务代码中拿到数据之前,需要对数据做一定处理。例如: - 转换数据格式 - 移除 loading
三,基本使用
1,基础配置
1 | import axios from 'axios' // 引入axios模块 |
2,request 拦截器(请求发送后端之前)
request 拦截器并不像他的名字一样,进行拦截,发送不出去,而是对请求的数据进行处理,再发送请求。
就如游客访问的时候,因为没有 token 拦截器只会判断 post 请求头携不带 token,并不是请求没有发送出去。
config 用于配置信息设置,error 用于显示错误信息。
1 | instance.interceptors.request.use( |
3,response 拦截器(数据返回后,具体页面加载之前)
响应拦截器,就是对返回的数据进行处理。数据返回页面前的行为
1 | instance.interceptors.response.use( |
4,将 axios 实例导出,方便其他页面调用
1 | export default instance |
5,其他页面调用上述实例发送请求
1 | import instance from '../xxx.js' // 将实例导入 |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment