VUE AXIOS封装三
时间:2019-11-14
本文章向大家介绍VUE AXIOS封装三,主要包括VUE AXIOS封装三使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
处理反复点击,以及错误拦截
import axios from 'axios' import { API } from '@commons/constants' import isEmpty from 'lodash/isEmpty' const Service = { API: API, REQUEST_CACHE: {}, // API请求池 METHODS: { GET: 'get', POST: 'post', DELETE: 'delete', PATCH: 'patch', PUT: 'put' }, generateDefaultConfig () { return { isRequest: false } }, has: function (key) { return !!this.REQUEST_CACHE[key] }, gather (config) { let key = config.url + (isEmpty(config.params) ? '' : JSON.stringify(config.params)) if (!this.has(key)) { let ajaxConfig = this.generateDefaultConfig() Object.assign(ajaxConfig, config, { key }) this.REQUEST_CACHE[key] = ajaxConfig } return key }, get (url, params, method) { let key = this.gather({ url, params, method: method || this.METHODS.GET }) return this.request(key) }, post (url, params) { return this.get(url, params, this.METHODS.POST) }, put (url, params) { return this.get(url, params, this.METHODS.PUT) }, delete (url) { return this.get(url, {}, this.METHODS.DELETE) }, patch (url, params) { return this.get(url, params, this.METHODS.PATCH) }, request (key) { let config = this.REQUEST_CACHE[key] return new Promise((resolve, reject) => { if (!config.isRequest) { config.isRequest = true // 处理两个系统不同的请求 let param = null; if(config.key.indexOf('/rbac') > -1){ param = config.params; }else{ param = {...config.params}; } axios[config.method.toLowerCase()](this.API + config.url, param) .then(res => { this.reset(key) resolve(res) }) .catch(err => { this.reset(key) return reject(err) }) } }) }, reset (key) { this.REQUEST_CACHE[key] = null } } /** * 对外暴露的API */ export default { get: Service.get.bind(Service), post: Service.post.bind(Service), delete: Service.delete.bind(Service), patch: Service.patch.bind(Service), put: Service.put.bind(Service) }
原文地址:https://www.cnblogs.com/tylz/p/11858463.html
- python报错问题解决:'ascii' codec can't encode character
- 利用message queue实现aspx与winform通信, 并附完整示例
- 10招步骤保护IIS服务器安全
- Haproxy+Keepalived高可用环境部署梳理(主主和主从模式)
- Android-Universal-Image-Loader 图片异步加载类库的使用
- 工作组模式下专用队列(Private Queue)如何引用远程队列路径
- haproxy反向代理环境部署(http和https代理)
- 网站速度优化模块HttpCompressionModule
- mysql启动后随即关闭问题解决(ibdata1文件损坏导致)
- webvirtmgr-重命名kvm虚拟机的名称
- Lucene 2.0最基本的入门代码
- 网站每日PV/IP统计/总带宽/URL统计脚本分享(依据网站访问日志)
- 查看服务器系统资源(cpu,内容)利用率前几位的进程的方法
- 腾讯云平台部总经理陈磊:大数据背后的技术支撑
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android实现Path平滑的涂鸦效果实例
- Android CameraManager类详解
- Android开发实现自定义水平滚动的容器示例
- Android Studio开发之 JNI 篇的简单示例
- Android自定义View播放Gif动画的示例
- Android下拉框PopupWindow使用详解
- Android实现自动文本框提示功能
- Android开发实现拍照功能的方法实例解析
- Android开发实现模仿360二维码扫描功能实例详解
- Android中控制和禁止ScrollView自动滑动到底部的方法
- ImageView 实现Android colorPikcer 选择器的示例代码
- Android Notification.Builder通知案例分享
- SimpleCommand实现上传文件或视频功能(四)
- SimpleCommand框架ImageLoader API详解(三)
- Android PopupMenu弹出菜单的实现