封装一下vue中的axios示例代码详解


Posted in Javascript onFebruary 16, 2020

在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器端和node.js中。他有很多优秀的特性,例如拦截请求和响应、取消请求、转换json、客户端防御cSRF等。所以我们的尤大大也是果断放弃了对其官方库vue-resource的维护,直接推荐我们使用axios库。如果还对axios不了解的,可以移步axios文档。

安装

npm install axios; // 安装axios

好了,下面开始今天的正文。

此次封装用以解决: (对于登录功能的可以直接使用,其他网络请求也可以直接用,如果有洁癖,可以把token有关的几行代码删掉)

ps:使用时得的引入axios时: import axios from '这个文件的名字及相对路径'

  • 接受后台token
  • post参数自动转换,省略qs.stringify()
  • 后台token过期之后自动清除本地数据,以便下次再次输入账号密码
  • 更好的错误提示信息
/**
 * 封装网络请求
 */
import axios from "axios"
import qs from "querystring"
import store from '../store'
import router from '../router'
//token过期之后重新回登录界面
const toLogin = () =>{
 router.push("/login")
}
// 错误信息响应方法
const errroHandle = (status,other) => {
 switch(status){
  case 400:
   console.log("服务器无法理解请求信息");
   break;
  case 401:
   console.log("用户信息验证失败");
   localStorage.removeItem("token"); // 可选项
   toLogin();
   break;
  case 403:
   console.log("请求被限制");
   localStorage.removeItem("token"); // 可选项
   toLogin();
   break;
  case 404:
   console.log("客户端请求信息错误");
   break;
  default:
   console.log(other);
   break;
 }
}
// 创建axios对象
const instance = axios.create({
 timeout:5000
})
// 挂在全局对象
instance.defaults.baseUrl = "";
instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
// 拦截器:请求拦截和响应拦截 post请求参数需要转码
// axios的返回值对象要求是一个promise对象
instance.interceptors.request.use(config =>{
 if(config.method === "post"){
  config.data = qs.stringify(config.data)
 }
 if(store.state.token){
  config.headers.authorization = store.state.token;
 }
 return config;
},error => Promise.reject(error))
instance.interceptors.response.use(
 // 成功
 response => response.status === 200 ? Promise.resolve(response) :Promise.reject(response),
 // 失败
 error => {
  const { response } = error;
  if(response){
   errroHandle(response.status,response.data)
   return Promise.reject(response)
  }else{
   // 错误信息都无法返回
   console.log("请求被中断");
  }
 }
)
export default instance

总结

以上所述是小编给大家介绍的封装一下vue中的axios示例代码详解,希望对大家有所帮助!

Javascript 相关文章推荐
新鲜出炉的js tips提示效果
Apr 03 Javascript
jquery 实现两Select 标签项互调示例代码
Sep 25 Javascript
jquery的幻灯片图片切换效果代码分享
Sep 07 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
Feb 27 Javascript
jQuery获取及设置表单input各种类型值的方法小结
May 24 Javascript
js发送短信倒计时的简单实现方法
Sep 08 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
Jul 17 jQuery
vue.js前后端数据交互之提交数据操作详解
Apr 24 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
Jul 13 Javascript
JavaScript中变量、指针和引用功能与操作示例
Aug 04 Javascript
js中this的指向问题归纳总结
Nov 28 Javascript
node crawler如何添加promise支持
Feb 01 Javascript
Vue.js的模板语法详解
Feb 16 #Javascript
Vue两个版本的区别和使用方法(更深层次了解)
Feb 16 #Javascript
vue数据响应式原理知识点总结
Feb 16 #Javascript
vue中利用iscroll.js解决pc端滚动问题
Feb 15 #Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
Feb 15 #Javascript
ES6 proxy和reflect的使用方法与应用实例分析
Feb 15 #Javascript
js表达式与运算符简单操作示例
Feb 15 #Javascript
You might like
PHP教程 变量定义
2009/10/23 PHP
检测png图片是否完整的php代码
2010/09/06 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
php判断两个浮点数是否相等的方法
2015/03/14 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
juqery 学习之四 筛选过滤
2010/11/30 Javascript
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
vue-axios使用详解
2017/05/10 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
layer.confirm()右边按钮实现href的例子
2019/09/27 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
Python查询IP地址归属完整代码
2017/06/21 Python
python中logging包的使用总结
2018/02/28 Python
Python continue继续循环用法总结
2018/06/10 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
Python 多维List创建的问题小结
2019/01/18 Python
Django QuerySet查询集原理及代码实例
2020/06/13 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
HTML5去掉输入框type为number时的上下箭头的实现方法
2020/01/03 HTML / CSS
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
以太网Ethernet IEEE802.3
2013/08/05 面试题
员工培训邀请函
2014/02/02 职场文书
运动会开幕式解说词
2014/02/05 职场文书
保护母亲河倡议书
2014/04/14 职场文书
写字楼租赁意向书
2014/07/30 职场文书
超市工作总结范文2014
2014/12/19 职场文书
美术教师个人工作总结
2015/02/06 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
音乐剧猫观后感
2015/06/04 职场文书