详解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 数据缓存模块进化史详细介绍
Nov 19 Javascript
js 自制滚动条的小例子
Mar 16 Javascript
js 判断计算字符串长度/判断空的简单方法
Aug 05 Javascript
谈谈对offsetleft兼容性的理解
Nov 11 Javascript
BootStrap Fileinput初始化时的一些参数
Dec 30 Javascript
深入理解Vue 单向数据流的原理
Nov 09 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
Nov 29 Javascript
推荐10款扩展Web表单的JS插件
Dec 25 Javascript
JavaScript实现多重继承的方法分析
Jan 09 Javascript
微信小程序嵌入腾讯视频源过程详解
Aug 08 Javascript
uni app仿微信顶部导航条功能
Sep 17 Javascript
VUE.js实现动态设置输入框disabled属性
Oct 28 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
simplehtmldom Doc api帮助文档
2012/03/26 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
13个PHP函数超实用
2015/10/21 Javascript
jQuery基本选择器之标签名选择器
2016/09/03 Javascript
canvas实现图像截取功能
2017/02/06 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
详解Vue路由开启keep-alive时的注意点
2017/06/20 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
vue中echarts引入中国地图的案例
2020/07/28 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
[02:41]辉夜杯现场一家三口 “我爸玩风行 我玩血魔”
2015/12/27 DOTA
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
css3实现书本翻页效果的示例代码
2021/03/08 HTML / CSS
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
高级护理专业大学生求职信
2013/10/24 职场文书
外贸员简历中的自我评价
2014/03/04 职场文书
工作会议主持词
2014/03/17 职场文书
《长相思》听课反思
2014/04/10 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
辞职信的写法
2015/02/27 职场文书
总经理致辞
2015/07/29 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server
python游戏开发Pygame框架
2022/04/22 Python
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android