封装一下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 相关文章推荐
Javascript与flash交互通信基础教程
Aug 07 Javascript
JavaScript下申明对象的几种方法小结
Oct 02 Javascript
JS之小练习代码
Oct 12 Javascript
jQuery AJAX回调函数this指向问题
Feb 08 Javascript
深入理解Javascript闭包 新手版
Dec 28 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
Aug 24 Javascript
JavaScript中数组添加值和访问值常见问题
Feb 06 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
Jan 24 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
Sep 28 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
Sep 29 Javascript
Vue中axios拦截器如何单独配置token
Dec 27 Javascript
详解 javascript对象创建模式
Oct 30 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
提取HTML标签
2006/10/09 PHP
关于初学PHP时的知识积累总结
2013/06/07 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
php之可变变量的实例详解
2017/09/12 PHP
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
2016/09/04 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
2017/07/12 jQuery
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
JS实现百度搜索框
2021/02/25 Javascript
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
python3实现字符串操作的实例代码
2019/04/16 Python
Python利用matplotlib绘制散点图的新手教程
2020/11/05 Python
通用的Django注册功能模块实现方法
2021/02/05 Python
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
婚礼证婚人证婚词
2014/01/13 职场文书
甜点店创业计划书
2014/01/27 职场文书
《雪地里的小画家》教学反思
2014/02/22 职场文书
课外活动总结
2015/02/04 职场文书
信访维稳承诺书
2015/05/04 职场文书
心理健康教育培训研修感言
2015/11/18 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
业余无线电通联Q语
2022/02/18 无线电