基于 axios 的 Vue 项目 http 请求优化

对于需要大量使用 http 请求的项目,我们通常会选择对 http 请求的方法进行二次封装,以便增加统一的拦截器,或者统一处理阻止重复提交之类的逻辑。Vue.js 的项目中我们选择使用了 axios 这样一个 http 库,下面也就简述下基于 axios 做的简单二次封装

依赖

首先引入 axios ,对于 ie9 这样不支持 promise 的浏览器还需引入 es6-promise 模块

require('es6-promise').polyfill();
var axios = require('axios');

axios 初始化

初始化我们要实现两个需求:
1.发送请求时带上 cookies
2.重发发送请求时,如果前一次相同请求还未结束则中止前一次请求

const httpServer = axios.create({responseType: 'json',withCredentials: true,  // 设置 withCredentials 使请求带上 `cookies`cancelToken: new axios.CancelToken(function (c) {cancel = c  // 记录当前请求的取消方法})
})

http 请求二次封装

var promiseArr = {}  // 用于记录每个请求的取消方法const gUtils = {getData: function () {let cancelconst httpServer = axios.create({responseType: 'json',withCredentials: true,  // 设置 withCredentials 使请求带上 `cookies`cancelToken: new axios.CancelToken(function (c) {cancel = c  // 记录当前请求的取消方法})})// 设置一个拦截器,每次发起请求前取消掉在进行中的相同请求httpServer.interceptors.request.use(function (config) {if (promiseArr[config.url]) {promiseArr[config.url]('操作取消')promiseArr[config.url] = cancel} else {promiseArr[config.url] = cancel}return config}, function (err) {// return Promise.reject (error)})return httpServer}
}

这样我们在对接服务时候直接使用我们封装好的 http 请求方法即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 事务配置5种方式

Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化&…

黑客宣称掌握了600多万个Instagram账号的信息

据外媒报道,上周早些时候,歌手兼演员赛琳娜戈麦斯因Instagram账号被盗而发出大量来自前男友贾斯汀比伯的裸照。不过当时很快赛琳娜就拿回了对账号的控制权并删掉了这些裸照。就在大家以为这件事情已经平息的时候,Instagram却被曝光了一个极为…

奇怪吸引子---Aizawa

奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性、稳定性、吸引性。吸引子是一个数学概念,描写运动的收敛类型。它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集…

安装SQL2012出现[HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1

本人安装SQL2012出现这个错误,找了三天三夜,终于把问题找出来,共享给有需要的人们,不用重新换系统 错误如下: 1,此问题是系统.net Framework版本冲突,首先下载.net Framework清理工具(如:cleanu…

java限制发送短信次数_使用java发送短信验证码码,出现流量限制怎么办?急急急...

注册登录后需要企业认证,直接在某度上找一张清晰有红章的企业营业执照,注意要细心点,要看看有没有水印。我第一次就没注意上传了一张有水印的营业执照,从此这个账号再也没有审核通过了,后面只能换个账号。都是后台人工审核的,比较严格。如果时…

GDKOI2015 Day2

P1 题目描述: 给出一个二分图,选择互不相交的边,使得边覆盖的点权和最大。 solution: 简单DP,用树状数组维护最大值。 时间复杂度:$O(n \log n) $ P2 题目描述: 给出N个或黑或白的元素&#xff…

XMind入门教程

最近在总结一些框架知识的时候,总找不到一款好的软件来画流程图,后来在网上查找这方面的东西,找到了 XMind,发现用来画思维导图还挺好的,看起来思路清晰,美观。那么便将使用的一些经验分享给大家。 1、什么是思维导图&…

java word转图片tiff_不怕复制内容 Word转存TIFF文件这么玩

辛辛苦苦把Word文件敲好,为了不让别人复制走内容,只能看文稿,有些人就选择转存成PDF文件——但是PDF文件依然可以被编辑,还有什么方法能防范呢?其实在Word 2003之前,用户可以通过Microsoft Office Document…

IDC:聚焦6+6,抓住数字化转型商机

今天,IDC中国2015年中国ICT市场趋势论坛巡回系列的第二站在北京举行。论坛的主题为“加速创新实现数字化转型”。 这是最坏的时代:经济增长乏力、实体经济不振、传统行业在被颠覆与重构、IT市场总体增长进入个位数区间、IT第二平台的领导厂商仍在困境中。…

IBM收购以色列应用发现公司EZSource

6月1日晚消息,IBM宣布对以色列公司EZSource进行收购,交易的具体条款没有被披露。 EZSource成立于2003年,以自有视觉面板产品闻名,该公司的产品能够帮助开发人员将重要的大型机应用程序现代化。该公司在以色列、英国、美国、瑞士、…

hadoop之 Hadoop2.2.0中HDFS的高可用性实现原理

在Hadoop2.0.0之前,NameNode(NN)在HDFS集群中存在单点故障(single point of failure),每一个集群中存在一个NameNode,如果NN所在的机器出现了故障,那么将导致整个集群无法利用,直到NN重启或者在…

3D坦克大战游戏源码

3D坦克大战游戏源码,该游戏是基于xcode 4.3,ios sdk 5.1开发。在xcode4.3.3上完美无报错。兼容ios4.3-ios6.0 ,一款ios平台上难得的3D坦克大战游戏源码,有20张不同的作战地图。通过左下角方向键和重力感应来控制坦克运行&#xff…

java编程基础素数实验报告,JAVA 基础编程练习题1 (输出素数)

JAVA 基础编程练习题1 (输出素数)JAVA 基础编程练习题1 (输出素数)题目:判断 101-200 之间有多少个素数,并输出所有素数。程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除,则表明…

Go语言在扫码支付系统中的成功实践

今天的内容主要分四个方面。第一,金融支付系统的一些特点;第二,我们的扫码支付系统技术选型;第三,系统迭代过程中的架构演进;第四,与Go相关的一些坑。 金融支付系统的一些特点 图 1 首先从业务流程入手,其实非常简单。…

一站式学习Wireshark(七):Statistics统计工具功能详解与应用

Wireshark一个强大的功能在于它的统计工具。使用Wireshark的时候,我们有各种类型的工具可供选择,从简单的如显示终端节点和会话到复杂的如Flow和IO图表。本文将介绍基本网络统计工具。包括:捕捉文件摘要(Summary),捕捉…

Odoo (OpenERP/TinyERP)-10.0 (Debian 8)

平台: Ubuntu 类型: 虚拟机镜像 软件包: odoo-10.0commercial erp odoo open source openerp tinyerp服务优惠价: 按服务商许可协议 云服务器费用:查看费用 立即部署产品详情 产品介绍Odoo https://www.odoo.com/ (前Op…

iOS开发- 蓝牙后台接收数据(BLE4.0)

最近在做一个蓝牙相关的项目, 需要在应用进入后台, 或者手机属于锁屏状态的情况下, 仍然保持蓝牙连接, 并且能正常接收数据。 本来以后会很麻烦, 但是学习了下..发现就2步而已。简单的不能再简单了。 好了。下面是具体实现办法。 1.在xxx-info.plist文件中, 新建一行 Required…

angularjs初始化时不显示模板内容, 不显示html, 不显示template

template的内容可能在需要的数据准备好之前就显示出来了, ng-cloak可以解决这个问题 ng-cloak <div id"template1" ng-cloak>{{ hello }}</div> <div id"template2" class"ng-cloak">{{ world }}</div>

20159206《网络攻防实践》第四周学习总结

20159206《网络攻防实践》第四周学习总结 教材学习内容总结 本章主要介绍了网络嗅探和协议分析 网络嗅探是一种常用的窃听技术&#xff0c;利用计算机的网络接口截获目的地为其他计算机的数据报文&#xff0c;以监听数据流中所包含的用户账户密码或私密信息等。 网络泄滩具有很…

四六级php,详解四六级查询API+网页

这个API是第三方API&#xff0c;第三方API的工作原理大都基于此&#xff0c;本文主要起一反三之作用&#xff0c;代码的不处周之还望及时指出。开发环境&#xff1a;WinServer2012 php7.0 Apache2.4.8思路&#xff1a;向官方查询界面传递参数&#xff0c;使用curl抓取结果网页…