封装 axios+promise通用请求函数操作


Posted in Javascript onAugust 11, 2020

我就废话不多说了,大家还是直接看代码吧~

import axios from "axios";
import baseUrl from "../../setBaseUrl";
axios.defaults.baseURL = baseUrl;
import { Loading, Message } from "element-ui";
const loadingOptions = {
 lock: true,
 text: "拼命加载中",
 spinner: "el-icon-loading",
 background: "rgba(0, 0, 0, 0.7)"
};
if (localStorage.token) {
 axios.defaults.headers.common["x-token"] = localStorage.token;
}
const Http = {
 get: function(url: string, data: any, isLoading: boolean) {
  if (localStorage.token) {
   axios.defaults.headers.common["x-token"] = localStorage.token;
  }
  let loading: any;
  if (isLoading) {
   loading = Loading.service(loadingOptions);
  }
  return new Promise<any>((resolve, reject) => {
   axios
    .get(url, { params: data })
    .then(function(res) {
     if (isLoading) {
      loading.close();
     }
     if (res.data.code === 200) {
      resolve(res.data.data);
     } else {
      // console.warn("Http error Info ===> ", res.data);
      reject(res.data.message);
     }
    })
    .catch(function(err) {
     if (isLoading) {
      loading.close();
     }
     // console.warn("Http error Info ===> ", err);
     Message({
      message: err.message,
      type: "error",
      duration: 2500,
      showClose: true
     });
    });
  }).catch(function(err) {
   Message({
    message: err,
    type: "error",
    duration: 2500,
    showClose: true
   });
  });
 },
 post: function(url: string, data: any, isLoading: boolean) {
  if (localStorage.token) {
   axios.defaults.headers.common["x-token"] = localStorage.token;
  }
  let loading: any;
  if (isLoading) {
   loading = Loading.service(loadingOptions);
  }
  return new Promise<any>((resolve, reject) => {
   axios
    .post(url, data)
    .then(function(res) {
     if (isLoading) {
      loading.close();
     }
     if (res.data.code === 200) {
      resolve(res.data.data);
     } else {
      reject(res.data.message);
     }
    })
    .catch(function(err) {
     if (isLoading) {
      loading.close();
     }
     // console.warn("Http error Info===>", err);
     Message({
      message: err.message,
      type: "error",
      duration: 2500,
      showClose: true
     });
    });
  }).catch(function(err) {
   Message({
    message: err,
    type: "error",
    duration: 2500,
    showClose: true
   });
  });
 },
 put: function(url: string, data: any, isLoading: boolean) {
  if (localStorage.token) {
   axios.defaults.headers.common["x-token"] = localStorage.token;
  }
  let loading: any;
  if (isLoading) {
   loading = Loading.service(loadingOptions);
  }
  return new Promise<any>((resolve, reject) => {
   axios
    .put(url, data)
    .then(function(res) {
     if (isLoading) {
      loading.close();
     }
     if (res.data.code === 200) {
      resolve(res.data.data);
     } else {
      reject(res.data.message);
     }
    })
    .catch(function(err) {
     if (isLoading) {
      loading.close();
     }
     // console.warn("Http error Info===>", err);
     Message({
      message: err.message,
      type: "error",
      duration: 2500,
      showClose: true
     });
    });
  }).catch(function(err) {
   Message({
    message: err,
    type: "error",
    duration: 2500,
    showClose: true
   });
  });
 },
 delete: function(url: string, data: any, isLoading: boolean) {
  if (localStorage.token) {
   axios.defaults.headers.common["x-token"] = localStorage.token;
  }
  let loading: any;
  if (isLoading) {
   loading = Loading.service(loadingOptions);
  }
  return new Promise<any>((resolve, reject) => {
   axios
    .delete(url, data)
    .then(function(res) {
     if (isLoading) {
      loading.close();
     }
     if (res.data.code === 200) {
      resolve(res.data.data);
     } else {
      reject(res.data.message);
     }
    })
    .catch(function(err) {
     if (isLoading) {
      loading.close();
     }
     // console.warn("Http error Info===>", err);
     Message({
      message: err.message,
      type: "error",
      duration: 2500,
      showClose: true
     });
    });
  }).catch(function(err) {
   Message({
    message: err,
    type: "error",
    duration: 2500,
    showClose: true
   });
  });
 }
};
export default Http;

补充知识:vuex刷新页面是store被更新,如何解决数据备份?

我用的方法很简单,在App.vue中的生命周期函数created中,监听页面刷新,在页面刷新的时候,将store的数据及时存储在sessionStorage中,然后刷新完毕后就可以将sessionStorage中的数据再取出来用

created () { //页面刷新store数据备份
  if (localStorage.cmstoken) {
   this.$router.replace("/data");
  }else {
   this.$router.replace("/");
  }
  if (sessionStorage.getItem("store") ) { //在页面加载时读取sessionStorage里的状态信息
    this.$store.replaceState(Object.assign({}, this.$store.state,JSON.parse(sessionStorage.getItem("store"))))
  }
  window.addEventListener("beforeunload",()=>{ //在页面刷新时将vuex里的信息保存到sessionStorage里
    sessionStorage.setItem("store",JSON.stringify(this.$store.state))
  })
 },

以上这篇封装 axios+promise通用请求函数操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于Web标准的UI组件 — 树状菜单(2)
Sep 18 Javascript
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
Jul 26 Javascript
style、 currentStyle、 runtimeStyle区别分析
Aug 01 Javascript
JS继承 笔记
Jul 13 Javascript
Vue.js上下滚动加载组件的实例代码
Jul 17 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
Aug 08 Javascript
详解用函数式编程对JavaScript进行断舍离
Sep 18 Javascript
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 jQuery
js实现延迟加载的几种方法详解
Jan 19 Javascript
jQuery实现获取多选框的值示例
Feb 07 jQuery
javascript中innerHTML 获取或替换html内容的实现代码
Mar 17 Javascript
原生js实现俄罗斯方块
Oct 20 Javascript
在vue中使用回调函数,this调用无效的解决
Aug 11 #Javascript
vue 调用 RESTful风格接口操作
Aug 11 #Javascript
vue之封装多个组件调用同一接口的案例
Aug 11 #Javascript
vue接口请求加密实例
Aug 11 #Javascript
vue组件暴露和.js文件暴露接口操作
Aug 11 #Javascript
vue npm install 安装某个指定的版本操作
Aug 11 #Javascript
小程序自动化测试的示例代码
Aug 11 #Javascript
You might like
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
php上传文件,创建递归目录的实例代码
2013/10/18 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
2015/04/21 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
Angular Js文件上传之form-data
2015/08/28 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
2017/02/14 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
Node错误处理笔记之挖坑系列教程
2018/06/05 Javascript
关于js对textarea换行符的处理方法浅析
2018/08/03 Javascript
JavaScript栈和队列相关操作与实现方法详解
2018/12/07 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
在Python中使用元类的教程
2015/04/28 Python
python发送邮件实例分享
2017/07/28 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
python flask搭建web应用教程
2019/11/19 Python
python剪切视频与合并视频的实现
2020/03/03 Python
Python爬虫实现vip电影下载的示例代码
2020/04/20 Python
python反扒机制的5种解决方法
2021/02/06 Python
深深扎根运动世界的生活品牌:Tillys
2017/10/30 全球购物
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
写给女朋友的道歉信
2014/01/08 职场文书
春节活动策划方案
2014/01/24 职场文书
优秀经理获奖感言
2014/03/04 职场文书
保证书格式范文
2014/04/28 职场文书
施工安全汇报材料
2014/08/17 职场文书
员工教育培训协议书
2014/09/27 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书
员工年度工作总结2015
2015/05/18 职场文书
小学同学聚会感言
2015/07/30 职场文书
python3操作redis实现List列表实例
2021/08/04 Python