详解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 相关文章推荐
jQuery对象和Javascript对象之间转换的实例代码
Mar 20 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
Apr 18 Javascript
JS获取select的value和text值的简单实例
Feb 26 Javascript
JQuery中serialize()用法实例分析
Feb 06 Javascript
纯Javascript实现ping功能的方法
Mar 20 Javascript
javascript实现五星评价代码(源码下载)
Aug 11 Javascript
jQueryUI DatePicker 添加时分秒
Jun 04 Javascript
javascript 动态脚本添加的简单方法
Oct 11 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
Oct 24 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
Oct 29 Javascript
Angular使用Restful的增删改
Dec 28 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
深入PHP内存相关的功能特性详解
2013/06/08 PHP
phpexcel导入excel数据使用方法实例
2013/12/24 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
jquery控制页面部分刷新的方法
2015/06/24 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
vue项目中api接口管理总结
2018/04/20 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
Vue 组件注册实例详解
2019/02/23 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
基于js实现抽红包并分配代码实例
2019/09/19 Javascript
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
Python3里的super()和__class__使用介绍
2015/04/23 Python
Python使用matplotlib绘制动画的方法
2015/05/20 Python
python变量不能以数字打头详解
2016/07/06 Python
TensorFlow 滑动平均的示例代码
2018/06/19 Python
django中使用POST方法获取POST数据
2019/08/20 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
Python使用Tkinter实现滚动抽奖器效果
2020/01/06 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
Matlab中plot基本用法的具体使用
2020/07/17 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
预备党员转正思想汇报
2014/01/12 职场文书
总账会计岗位职责
2014/03/13 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
幸福家庭标语
2014/06/27 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
高中生自我评价范文2015
2015/03/03 职场文书