一、axios的封装

在vue中为了使用axios使用方便,不需要每一个模块进行导入,就需要对其进行封装:

1、新建http.js模块

import axios from 'axios'

// 设置基础apiUrl
axios.defaults.baseURL = 'http://127.0.0.1:8000/'; export default {
install: function (Vue) {
Object.defineProperty(Vue.prototype, '$http', {value: axios})
}
}

2、在main.js中导入

此时vue实例中已经有$http方法了

import MyServerHttp from './plugins/http.js'

Vue.use(MyServerHttp);

3、在需要的地方进行调用

async editUser(context, object) {
//进行调用,其中object._this为vue实例
const res = await object._this.$http.put(`crm/user/${object.userId}`, object.form);
const {data, meta: {message, code}} = res.data;
if (code === 2000) {
context.dispatch("getAllUserList", {_this:object._this});
object._this.editDialogFormVisible = false;
object._this.$message.success(message);
}
},

二、拦截器的使用

拦截器是在发送请求之前做一些动作,比如将将token从localstorage中获取添加到请求头中。

// 拦截request,/ 添加请求拦截器
axios.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
if (config.url !== "login") {
config.headers['Authorization'] = localStorage.getItem("token");
} return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});

三、响应器的使用

响应器是对响应的内容提前做一些过滤之类的动作,然后返回。

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
// 对响应数据做点什么 const res = response.data; if (res.count) return response if (res.meta.code) {
if (res.meta.code === 2002) {
//如果返回的code === 2002,就返回无权限查看内容,不需要将整个response返回
Message.warning("无权查看对应数据")
}
return response } else {
return response;
} }, function (error) {
// 对响应错误做点什么
return Promise.reject(error);
});

完整封装代码:

import axios from 'axios'
import {Message} from 'element-ui'; // const MyHttpServer = {}; // MyHttpServer.install = (Vue) => {
//
// // axios.baseURL = 'http://127.0.0.1:8000/';
//
// //添加实例方法
// Vue.prototype.$http = axios
//
// };
//
// export default MyHttpServer // 设置基础apiUrl
axios.defaults.baseURL = 'http://127.0.0.1:8000/'; axios.defaults.withCredentials = true; // 允许携带cookie // 拦截request,/ 添加请求拦截器
axios.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
if (config.url !== "login") {
config.headers['Authorization'] = localStorage.getItem("token");
} return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
//
// 添加响应拦截器
axios.interceptors.response.use(function (response) {
// 对响应数据做点什么 const res = response.data; if (res.count) return response if (res.meta.code) {
if (res.meta.code === 2002) {
//如果返回的code === 2002,就返回无权限查看内容,不需要将整个response返回
Message.warning("无权查看对应数据")
}
return response } else {
return response;
} }, function (error) {
// 对响应错误做点什么
return Promise.reject(error);
}); export default {
install: function (Vue) {
Object.defineProperty(Vue.prototype, '$http', {value: axios})
}
}

http.js

vue中axios的封装以及简单使用的更多相关文章

  1. Vue中axios的封装和api接口的统一管理

    更新的是我csdn上的文章,需要的话可以看下,互相学习点击去我的csdn vue中axios的封装 在vue项目和后端交互获取数据时,通常使用axios库,官方文档:https://www.npmjs ...

  2. 聊聊 Vue 中 axios 的封装

    聊聊 Vue 中 axios 的封装 axios 是 Vue 官方推荐的一个 HTTP 库,用 axios 官方简介来介绍它,就是: Axios 是一个基于 promise 的 HTTP 库,可以用在 ...

  3. vue中Axios的封装和API接口的管理

    前端小白的声明: 这篇文章为转载:主要是为了方便自己查阅学习.如果对原博主造成侵犯,我会立即删除. 转载地址:点击查看 如图,面对一团糟代码的你~~~真的想说,What F~U~C~K!!! 回归正题 ...

  4. vue中axios使用封装

    一.在main.js导入 // 引入axios,并加到原型链中 import axios from 'axios'; Vue.prototype.$axios = axios; import QS f ...

  5. vue中axios的封装

    第一步还是先下载axios cnpm install axios -S 第二步建立一个htttp.js import axios from 'axios'; import { Message } fr ...

  6. vue中axios复用封装

    ajax2: function() { let that = this; return that .$http({ method: "get", url: "/Home/ ...

  7. vue中axios的封装(注意这里面异步的概念和用法十分重要)

    todo https://www.cnblogs.com/chaoyuehedy/p/9931146.html

  8. vue中axios的深入使用

    如上所示一条简单的请求数据,用到了vue中axios,promise,qs等等 这里我将vue中用到的axios进行了封装方便日后使用  先对工具类进行封装utils/axios.js: // 引入模 ...

  9. vue中Axios请求豆瓣API数据并展示到Swipe中

    vue中Axios请求豆瓣API数据并展示到Swipe中 1.首先是安装Axios: 安装方法cnpm install axios --save 等待npm安装完毕: 2.在main.js中引入axi ...

随机推荐

  1. Java面试宝典(1)Java基础部分

    Java面试宝典 题目,日积月累,等到出去面试时,一切都水到渠成,面试时就自然会游刃有余了. 答题时,先答是什么,再答有什么作用和要注意什么(这部分最重要,展现自己的心得) 答案的段落分别,层次分明, ...

  2. 函数的atguments

    在调用函数时,浏览器每次都会传递进两个隐含的参数: 1.函数的上下文对象this 2.封装实参的对象arguments arguments是一个类数组对象,它也可以用过索引来操作数据,也可以获取长度 ...

  3. IDEA webapp文件夹不识别解决方案

    使用IDEA 创建moudule 用的是的是maven archertype-quickstart ,自动生成并么有webapp目录,于是我从别的项目中拷贝了一个,发现webapp文件夹图标和普通文件 ...

  4. python wave 库 读取 BytesIO 对象的注意事项

    程序中遇到需要使用临时文件时,常使用内存中的 io.BytesIO() 代替实体二进制文件,以避免磁盘IO,同时免去了考虑文件名的麻烦. file = io.BytesIO() file.write( ...

  5. P4151 [WC2011]最大XOR和路径 线性基

    题目传送门 题意:给出一幅无向图,求1到n的所有路径中最大异或和,一条边可以被重复经过. 思路: 参考了大佬的博客 #pragma GCC optimize (2) #pragma G++ optim ...

  6. 前端学习(十七)js数组(笔记)

    数组:        1.    var arr=[1,2,3,4]; 2.    var arr=new Array(1,2,3,4,5); 区别:        1.写法不一样,选择第一种(好写) ...

  7. 了解跨站请求伪造CSRF

    参考以下两篇文章: https://www.cnblogs.com/Erik_Xu/p/5481441.html https://www.cnblogs.com/4littleProgrammer/p ...

  8. windows下注册ocx控件

    OCX 是对象类别扩充组件(Object Linking and Embedding (OLE) Control Extension):是可执行的文件的一种,但不可直接被执行: 是 ocx 控件的扩展 ...

  9. mysql 日期函数大全

    对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型. 这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内: my ...

  10. linux安装zabbix的tar包和另外一个并存

    在安装zabbix客户端的时候,发现存在一个zabbix客户端,现在我们要重新建一个来与之并存 第一步安装: cd /data0/software/ tar xf zabbix-3.0.28.tar. ...