详解vue中axios的封装


Posted in Javascript onJuly 18, 2018

第一步还是先下载axios

cnpm install axios -S

第二步建立一个htttp.js

import axios from 'axios';
import { Message } from 'element-ui';

axios.defaults.timeout = 5000;
axios.defaults.baseURL ='';


//http request 拦截器
axios.interceptors.request.use(
 config => {
  // const token = getCookie('名称');注意使用的时候需要引入cookie方法,推荐js-cookie
  config.data = JSON.stringify(config.data);
  config.headers = {
   'Content-Type':'application/x-www-form-urlencoded'
  }
  // if(token){
  //  config.params = {'token':token}
  // }
  return config;
 },
 error => {
  return Promise.reject(err);
 }
);


//http response 拦截器
axios.interceptors.response.use(
 response => {
  if(response.data.errCode ==2){
   router.push({
    path:"/login",
    querry:{redirect:router.currentRoute.fullPath}//从哪个页面跳转
   })
  }
  return response;
 },
 error => {
  return Promise.reject(error)
 }
)


/**
 * 封装get方法
 * @param url
 * @param data
 * @returns {Promise}
 */

export function fetch(url,params={}){
 return new Promise((resolve,reject) => {
  axios.get(url,{
   params:params
  })
  .then(response => {
   resolve(response.data);
  })
  .catch(err => {
   reject(err)
  })
 })
}


/**
 * 封装post请求
 * @param url
 * @param data
 * @returns {Promise}
 */

 export function post(url,data = {}){
  return new Promise((resolve,reject) => {
   axios.post(url,data)
     .then(response => {
      resolve(response.data);
     },err => {
      reject(err)
     })
  })
 }

 /**
 * 封装patch请求
 * @param url
 * @param data
 * @returns {Promise}
 */

export function patch(url,data = {}){
 return new Promise((resolve,reject) => {
  axios.patch(url,data)
     .then(response => {
      resolve(response.data);
     },err => {
      reject(err)
     })
 })
}

 /**
 * 封装put请求
 * @param url
 * @param data
 * @returns {Promise}
 */

export function put(url,data = {}){
 return new Promise((resolve,reject) => {
  axios.put(url,data)
     .then(response => {
      resolve(response.data);
     },err => {
      reject(err)
     })
 })
}

第三步

在main.js中引入

import axios from 'axios'
import {post,fetch,patch,put} from './utils/http'
//定义全局变量
Vue.prototype.$post=post;
Vue.prototype.$fetch=fetch;
Vue.prototype.$patch=patch;
Vue.prototype.$put=put;

最后在组件里直接使用

mounted(){
  this.$fetch('/api/v2/movie/top250')
   .then((response) => {
    console.log(response)
   })
 },

其余的方法一样
Javascript 相关文章推荐
Javascript 判断Flash是否加载完成的代码
Apr 12 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图
Jan 23 Javascript
jquery 列表双向选择器之改进版
Aug 09 Javascript
JS弹出层的显示与隐藏示例代码
Dec 27 Javascript
jQuery获得内容和属性示例代码
Jan 16 Javascript
IE中鼠标经过option触发mouseout的解决方法
Jan 29 Javascript
JavaScript实现DOM对象选择器
Sep 24 Javascript
js实现多行文本框统计剩余字数功能
Mar 28 Javascript
js禁止浏览器的回退事件
Apr 20 Javascript
react-native 完整实现登录功能的示例代码
Sep 11 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
Mar 27 Javascript
全面分析JavaScript 继承
May 30 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
Jul 18 #Javascript
微信小程序将字符串生成二维码图片的操作方法
Jul 17 #Javascript
使用Vue实现图片上传的三种方式
Jul 17 #Javascript
vue的token刷新处理的方法
Jul 17 #Javascript
vue 权限认证token的实现方法
Jul 17 #Javascript
vue 实现axios拦截、页面跳转和token 验证
Jul 17 #Javascript
详解webpack import()动态加载模块踩坑
Jul 17 #Javascript
You might like
php实现的一个很好用HTML解析器类可用于采集数据
2013/09/23 PHP
PHP实现的简单网络硬盘
2015/07/29 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
2016/07/18 PHP
thinkPHP实现的联动菜单功能详解
2017/05/05 PHP
动态表格Table类的实现
2009/08/26 Javascript
Jquery 自定义动画概述及示例
2013/03/29 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
2015/10/12 Javascript
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
JS Input里添加小图标的两种方法
2017/11/11 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
如何检查一个对象是否为空
2019/04/11 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
[12:29]《一刀刀一天》之DOTA全时刻19:蝙蝠骑士田伯光再度不举
2014/06/10 DOTA
python实现的简单猜数字游戏
2015/04/04 Python
详解Python中的type()方法的使用
2015/05/21 Python
Python中动态创建类实例的方法
2017/03/24 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
力学专业毕业生自荐信
2013/11/17 职场文书
班级德育工作实施方案
2014/02/21 职场文书
担保书格式及范文
2014/04/01 职场文书
住宅使用说明书
2014/05/09 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
单位工作证明书格式
2014/10/04 职场文书
环保宣传语大全
2015/07/13 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书
关于销售人员的年终工作总结要点
2019/08/15 职场文书
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS