详解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 相关文章推荐
云网广告中的代码,提示出错,大家找找
Nov 21 Javascript
索趣科技的答案
Feb 07 Javascript
EXTJS记事本 当CompositeField遇上RowEditor
Jul 31 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
Jan 29 Javascript
Jquery全选与反选点击执行一次的解决方案
Aug 14 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
Nov 02 Javascript
JS实现一个简单的日历
Feb 22 Javascript
js实现导航吸顶效果
Feb 24 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
Dec 20 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
Jan 07 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
May 14 Javascript
JavaScript 如何计算文本的行数的实现
Sep 14 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
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
实用函数9
2007/11/08 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
2013/04/02 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
JavaScript中的this到底是什么(一)
2015/12/09 Javascript
简单实现Bootstrap标签页
2020/08/09 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
bootstrap手风琴折叠示例代码分享
2017/05/22 Javascript
详解angular 中的自定义指令之详解API
2017/06/20 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
wx-charts 微信小程序图表插件的具体使用
2019/08/18 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
python中强大的format函数实例详解
2018/12/05 Python
Django models filter筛选条件详解
2020/03/16 Python
Python基于xlrd模块处理合并单元格
2020/07/28 Python
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
车辆安全检查制度
2014/01/12 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
分公司负责人任命书
2014/06/04 职场文书
超市七夕促销活动方案
2014/08/28 职场文书
防灾减灾活动总结
2014/08/30 职场文书
2014年度工作总结报告
2014/12/15 职场文书
介绍信格式
2015/01/30 职场文书
2015年社会治安综合治理工作总结
2015/04/10 职场文书
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers
mysql通过group by分组取最大时间对应数据的两种有效方法
2022/09/23 MySQL