import axios from axios;import { baseURL } from @/config;class HttpRequest {constructor(baseUrl = baseURL) {this.baseUrl = baseUrl;// 存储请求的队列this.queue = {}}// 内部的一些配置getInsideConfig() ...
import axios from 'axios'; import { baseURL } from '@/config'; class HttpRequest { constructor(baseUrl = baseURL) { this.baseUrl = baseUrl; // 存储请求的队列 this.queue = {} } // 内部的一些配置 getInsideConfig() { const config = { baseUrl: this.baseUrl, headers: {}, } return config; } // 全局请求拦截器 interceptors(instance, url) { // 请求拦截 instance.interceptors.request.use(config => { // 如果队列中有请求,执行loading效果 if (!Object.keys(this.queue).length) { Spin.show(); } // 每一次过来的请求都添加到queue队列中 this.queue[url] = true; }, error => { return Promise.reject(error) }) // 响应拦截 instance.interceptors.response.use(res => { // 请求返回了,说明请求结束了,删除队列中传入的那个url delete this.queue[url]; console.log(res); return res; }, error => { delete this.queue[url]; return Promise.reject(error) }) } request(options) { const instance = axios.create(); // 把外面传进来的配置合并预设的配置 options = Object.assign(this.getInsideConfig(), options); // 请求的时候,把请求的url传到全局拦截器中,拦截器中去做添加队列的逻辑,执行loading this.interceptors(instance, options.url); return instance(options); } } export default HttpRequest;
使用:
1.引入我们创建的axios类,并导出
2.接口请求API.js文件中引入:
3.组件中调用这个请求
沃梦达教程
本文标题为:18-简单封装axios
基础教程推荐
猜你喜欢
- Flutter进阶之实现动画效果(三) 2022-10-28
- Android开发Compose集成高德地图实例 2023-06-15
- IOS获取系统相册中照片的示例代码 2023-01-03
- Android实现短信验证码输入框 2023-04-29
- iOS中如何判断当前网络环境是2G/3G/4G/5G/WiFi 2023-06-18
- iOS Crash常规跟踪方法及Bugly集成运用详细介绍 2023-01-18
- iOS开发 全机型适配解决方法 2023-01-14
- iOS开发使用XML解析网络数据 2022-11-12
- Android Compose自定义TextField实现自定义的输入框 2023-05-13
- MVVMLight项目Model View结构及全局视图模型注入器 2023-05-07