详解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 检测键盘按键信息及键码值对应介绍
Jan 03 Javascript
简单实例处理url特殊符号&处理(2种方法)
Apr 02 Javascript
JS Replace()的高级使用方法介绍
Jun 29 Javascript
jquery取消选择select下拉框示例代码
Feb 22 Javascript
JS 在指定数组中随机取出N个不重复的数据
Jun 10 Javascript
函数window.open实现关闭所有的子窗口
Aug 03 Javascript
javascript数组常用方法汇总
Sep 10 Javascript
JavaScript中错误正确处理方式小结你用对了吗
Oct 10 Javascript
微信小程序仿美团城市选择
Jun 06 Javascript
微信小程序按钮去除边框线分享页面功能
Aug 27 Javascript
vue实现自定义多选按钮
Jul 16 Javascript
写一个Vue loading 插件
Nov 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
谈谈新手如何学习PHP
2006/12/23 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
2016/01/08 PHP
php使用yield对性能提升的测试实例分析
2019/09/19 PHP
调整小数的格式保留小数点后两位
2014/05/14 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
javascript性能优化之事件委托实例详解
2015/12/12 Javascript
探索angularjs+requirejs全面实现按需加载的套路
2016/02/26 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
详解jQuery中的事件
2016/12/14 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
js中创建对象的几种方式
2017/02/05 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
JavaScript 异步调用
2017/10/25 Javascript
使用vue实现grid-layout功能实例代码
2018/01/05 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
Python装饰器原理与简单用法实例分析
2018/04/29 Python
python斐波那契数列的计算方法
2018/09/27 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
python将字典列表导出为Excel文件的方法
2019/09/02 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
python 批量将中文名转换为拼音
2021/02/07 Python
html5 音乐播放器 audio 标签使用概述
2013/07/15 HTML / CSS
中国最大的名表商城:万表网
2016/08/29 全球购物
十佳家长事迹材料
2014/08/26 职场文书
中学生打架检讨书之500字
2019/08/06 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python
python 中yaml文件用法大全
2021/07/04 Python
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python