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


Posted in Javascript onSeptember 04, 2017

对于需要大量使用 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 cancel
    const 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 请求方法即可

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
表单项的name命名为submit、reset引起的问题
Dec 22 Javascript
比较详细的关于javascript 解析json的代码
Dec 16 Javascript
jQuery的链式调用浅析
Dec 03 Javascript
用Juery网页选项卡实现代码
Jun 13 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
Feb 19 Javascript
Node.js开发者必须了解的4个JS要点
Feb 21 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
May 30 Javascript
js 声明数组和向数组中添加对象变量的简单实例
Jul 28 Javascript
AngularJS入门教程之ng-checked 指令详解
Aug 01 Javascript
js 获取范围内的随机数实例代码
Aug 02 Javascript
Vue 去除路径中的#号
Apr 19 Javascript
JavaScript实现图片放大镜效果
Jun 27 Javascript
JS实现颜色的10进制转化成rgba格式的方法
Sep 04 #Javascript
利用yarn代替npm管理前端项目模块依赖的方法详解
Sep 04 #Javascript
JS实现匀加速与匀减速运动的方法示例
Sep 04 #Javascript
node-sass安装失败的原因与解决方法
Sep 04 #Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
Sep 04 #Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
Sep 04 #Javascript
React教程之Props验证的具体用法(Props Validation)
Sep 04 #Javascript
You might like
php mssql 数据库分页SQL语句
2008/12/16 PHP
深入PHP数据缓存的使用说明
2013/05/10 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
php实现cookie加密的方法
2015/03/10 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
2016/11/16 PHP
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
2012/09/11 Javascript
JS实现QQ图片一闪一闪的效果小例子
2013/07/31 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
JavaScript实现页面5秒后自动跳转的方法
2015/04/16 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
你不知道的高性能JAVASCRIPT
2016/01/18 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
微信小程序开发一键登录 获取session_key和openid实例
2016/11/23 Javascript
详解vue组件化开发-vuex状态管理库
2017/04/10 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
jQuery替换节点元素的操作方法
2018/03/18 jQuery
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
2018/11/19 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
在vue中使用Base64转码的案例
2020/08/07 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
2020/04/24 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
基于HTML5代码实现折叠菜单附源码下载
2015/11/27 HTML / CSS
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
Oracle快照(snapshot)
2015/03/13 面试题
进程的查看和调度分别使用什么命令
2013/12/14 面试题
新闻编辑自荐信
2013/11/03 职场文书
适用于所有创业者的创业计划书
2014/02/05 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
费城故事观后感
2015/06/10 职场文书
Python实现将多张图片合成MP4视频并加入背景音乐
2022/04/28 Python