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


猜你喜欢
- Android studio实现动态背景页面 2023-05-23
- SurfaceView播放视频发送弹幕并实现滚动歌词 2023-01-02
- Flutter实现底部和顶部导航栏 2022-08-31
- Android实现监听音量的变化 2023-03-30
- 作为iOS开发,这道面试题你能答出来,说明你基础很OK! 2023-09-14
- Android实现轮询的三种方式 2023-02-17
- 详解flutter engine 那些没被释放的东西 2022-12-04
- 最好用的ios数据恢复软件:PhoneRescue for Mac 2023-09-14
- Android MaterialButton使用实例详解(告别shape、selector) 2023-06-16
- iOS 对当前webView进行截屏的方法 2023-03-01