详解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的IE和Firefox(火狐)兼容性的问题总结及常用例子
May 21 Javascript
js验证模型自我实现的具体方法
Jun 21 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
May 11 Javascript
node.js中的path.normalize方法使用说明
Dec 08 Javascript
D3.js中data(), enter() 和 exit()的问题详解
Aug 17 Javascript
基于jQuery实现在线选座之高铁版
Aug 24 Javascript
你真的了解BOM中的history对象吗
Feb 13 Javascript
bootstrap PrintThis打印插件使用详解
Feb 20 Javascript
vue-router路由懒加载和权限控制详解
Dec 13 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
Mar 07 Javascript
微信小程序中this.data与this.setData的区别详解
Sep 17 Javascript
vue+高德地图实现地图搜索及点击定位操作
Sep 09 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
phpQuery占用内存过多的处理方法
2013/11/13 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
2017/06/10 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
基于jquery的获取mouse坐标插件的实现代码
2010/04/01 Javascript
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
jquery win 7透明弹出层效果的简单代码
2013/08/06 Javascript
jquery中获取id值方法小结
2013/09/22 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
js实现上传并压缩图片效果
2018/01/10 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
python opencv3实现人脸识别(windows)
2018/05/25 Python
python绘制圆柱体的方法
2018/07/02 Python
python怎么删除缓存文件
2020/07/19 Python
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
印尼购物网站:iLOTTE
2019/10/16 全球购物
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
毕业生找工作的求职信范文
2013/12/24 职场文书
李培根演讲稿
2014/05/22 职场文书
幼儿园见习总结
2015/06/23 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
golang fmt格式“占位符”的实例用法详解
2021/07/04 Golang
Redis集群的关闭与重启操作
2021/07/07 Redis