详解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 相关文章推荐
动态改变textbox的宽高的js
Oct 26 Javascript
20行代码实现的一个CSS覆盖率测试脚本
Jul 07 Javascript
js监听键盘事件示例代码
Jul 26 Javascript
javascript检测两个数组是否相似
May 19 Javascript
Javascript编写2048小游戏
Jul 07 Javascript
用js编写的简单的计算器代码程序
Aug 04 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
Sep 10 Javascript
JQuery+EasyUI轻松实现步骤条效果
Feb 22 Javascript
js 动态给元素添加、移除事件的实现方法
Jul 19 Javascript
js学习笔记之事件处理模型
Oct 31 Javascript
JavaScript数组复制详解
Feb 02 Javascript
vue中使用极验验证码的方法(附demo)
Dec 04 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
1 Tube Radio
2021/03/02 无线电
discuz7 phpMysql操作类
2009/06/21 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
php 利用array_slice函数获取随机数组或前几条数据
2015/09/30 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
javascript对talbe进行动态添加、删除、验证实现代码
2012/03/29 Javascript
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
jQuery实现自定义事件的方法
2015/04/17 Javascript
Javascript中With语句用法实例
2015/05/14 Javascript
JS简单设置下拉选择框默认值的方法
2016/08/20 Javascript
javascript this详细介绍
2016/09/19 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
2016/11/24 Javascript
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
2018/09/27 Javascript
Vue使用NPM方式搭建项目
2018/10/25 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
vue框架制作购物车小球动画效果实例代码
2019/09/26 Javascript
Vue2.0 ES6语法降级ES5的操作
2020/10/30 Javascript
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
Django框架下在URLconf中指定视图缓存的方法
2015/07/23 Python
python print出共轭复数的方法详解
2019/06/25 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
Python 共享变量加锁、释放详解
2019/08/28 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
英国最大的滑板品牌选择:Route One
2019/09/22 全球购物
家具厂厂长岗位职责
2014/01/01 职场文书
初一家长会邀请函
2014/01/31 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
邓小平理论心得体会
2014/09/09 职场文书