封装一下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 相关文章推荐
jQuery的12招常用技巧分享
Aug 08 Javascript
javascript与有限状态机详解
May 08 Javascript
无刷新上传文件并返回自定义值
Jun 11 Javascript
node-http-proxy修改响应结果实例代码
Jun 06 Javascript
jQuery之简单的表单验证实例
Jul 07 Javascript
js css+html实现简单的日历
Jul 14 Javascript
js动态生成form 并用ajax方式提交的实现方法
Sep 09 Javascript
JS日程管理插件FullCalendar简单实例
Feb 07 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
Feb 19 Javascript
JS传参及动态修改页面布局
Apr 13 Javascript
JS实现队列的先进先出功能示例
May 10 Javascript
Angular 5.x 学习笔记之Router(路由)应用
Apr 08 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
收音机术语解释
2021/03/01 无线电
php设计模式 Mediator (中介者模式)
2011/06/26 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
Convert Seconds To Hours
2007/06/16 Javascript
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
锋利的jQuery 第三章章节总结的例子
2010/03/23 Javascript
50个比较实用jQuery代码段
2011/09/18 Javascript
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
js抽奖转盘实现方法分析
2020/05/16 Javascript
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
详解Python3中ceil()函数用法
2019/02/19 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
django跳转页面传参的实现
2020/09/17 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
户籍证明的格式
2014/01/13 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
装饰工程师岗位职责
2014/06/08 职场文书
单位在职证明书
2014/09/11 职场文书
标准版离职证明书
2014/09/12 职场文书
金秋助学感谢信
2015/01/21 职场文书
社区元宵节活动总结
2015/02/06 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
小学工作总结2015
2015/05/04 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
2016年端午节校园广播稿
2015/12/18 职场文书
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript