主要做3点:

1、配置一个请求地址前缀

2、请求拦截(在请求发出去之前拦截),给所有的请求都带上 token

3、拦截响应,遇到 token 不合法则报错

// 对 axios 的二次封装
import axios from 'axios'
import router from '../router' // 引入路由对像,用于路由跳转 // 创建一个新的 axios 实例
axios.defaults.withCredentials = true //解决跨域后如何在请求里带上cookie的问题
var http = axios.create({
baseURL: 'http://localhost:8080/',
timeout: 8000, // 请求超时
}) // 请求拦截(在请求发出去之前拦截),给所有的请求都带上 token
http.interceptors.request.use(
(config) => {
const token = localStorage.getItem('token')
if (token) {
// 设置 token ,一般是在 headers 里加入 Authorization,并加上 Bearer 标注
// 最好通过此种形式设置 request.headers['Authorization']
config.headers['Authorization'] = token
}
return config
},
(error) => {
console.log(error)
return Promise.reject(error)
}
) // 拦截响应,遇到 token 不合法则报错
http.interceptors.response.use(
response => {
if (response.data.token) { // 将返回的最新的 token 保存
localStorage.setItem('token', response.data.token);
}
return response;
},
error => {
if (error.response.status === 401) {
// 401 说明 token 验证失败
// 可以直接跳转到登录页面,重新登录获取 token
localStorage.removeItem('token');
console.log(error.response.data.error.message);
router.replace({
path: '/login',
query: {
redirect: router.currentRoute.fullPath
}
})
} else if (error.response.status === 500) {
// 服务器错误
return Promise.reject('服务器出错:', error.response.data);
}
return Promise.reject(error.response.data); // 返回接口返回的错误信息
}); export default http

Vue:对axios进行简单的二次封装的更多相关文章

  1. 使用Vue CLI 3将基于element-ui二次封装的组件发布到npm

    前言:之前在网上找的好多都是基于vue-cli 2.x的,而使用vue-cli 3的文章比较少,Vue CLI 3 中文文档,所以我在自己尝试的时候把几篇文章结合了一下,调出来了我想要的模式,也就是V ...

  2. vue中axios的简单使用

    我们一般在用jq的时候会使用到ajax来进行与服务器之间的交流,vue中也提供了相应的类似于ajax的方法-axios来进行与服务器之间的数据传递 现在的这篇是最简单的使用,后续会添加上来复杂的使用 ...

  3. axios简单的二次封装

    import axios from 'axios' import { Message} from 'element-ui' import store from '../store' //vuex im ...

  4. Vue 给axios做个靠谱的封装(报错,鉴权,跳转,拦截,提示)

    需求及实现 统一捕获接口报错 弹窗提示 报错重定向 基础鉴权 表单序列化 用法及封装 用法 // 服务层 , import默认会找该目录下index.js的文件,这个可能有小伙伴不知道可以去了解npm ...

  5. vue项目中对axios的二次封装

    近来在使用vue重构公司m站时,使用了axios来进行数据的请求,由于项目的需要,对axios进行了二次封装,点击进入axios //引入axios import axios from 'axios' ...

  6. vue中axios使用二:axios以post,get,jsonp的方式请求后台数据

    本文为博主原创,转载请注明出处 axios在上一篇中讲过:vue中axios使用一:axios做拦截器,axios是请求后台资源的模块,用来请求后台资源. axios本身是支持get,post请求后台 ...

  7. vue学习【二】vue结合axios动态引用echarts

    大家好,我是一叶,本篇是vue学习的第二篇,本篇将要讲述vue结合axios动态引用echarts. 在vue中,异步刷新使用的是axios,类似于大家常用的ajax,其实axios已经是vue的第二 ...

  8. 【vue】axios二次封装,更好的管理api接口和使用

    在现在的前端开发中,前后端分离开发比较主流,所以在封装方法和模块化上也是非常需要掌握的一门技巧.而axios的封装也是非常的多,下面的封装其实跟百度上搜出来的axios封装或者axios二次封装区别不 ...

  9. vue中axios的二次封装

    我们做项目时,虽然axios也可以直接拿来用,但是对接口比较零散,不太好进行维护,也会产生大量的重复代码,所以我在这对axios进行了统一接口处理 第一步,先在src中的公共文件夹中如utils里新建 ...

随机推荐

  1. linux文本模式和文本替换功能

    linux文本有:正常模式,编辑模式,可视化模式,命令模式. 正常模式进入编辑模式下的快捷键: i  --光标当前位置输入 a --光标位置后输入(append) I --行首输入 A --行尾输入 ...

  2. kettle——转换案例

    把stu1的数据按id同步到stu2,stu2有相同id则更新数据 (1)在mysql中创建两张表 mysql> create database kettle; mysql> use ke ...

  3. 原生sql查询返回结果集处理方法

    今天博主用原生写查询的时候发现,查询出来的居然不是我数据表里的数据,而是一个对象 object(mysqli_result)#2 (5) { ["current_field"]=& ...

  4. xdebug不显示

  5. kafka SASL认证介绍及自定义SASL PLAIN认证功能

    目录 kafka 2.x用户认证方式小结 SASL/PLAIN实例(配置及客户端) broker配置 客户端配置 自定义SASL/PLAIN认证(二次开发) kafka2新的callback接口介绍 ...

  6. Talk About My Route To Edit

    Initially, I plan to write 4 columns:Python, Qt, Linux,and respectively, Career. However, my ambitio ...

  7. 如何将多个网页合并成一个PDF文件

    pdfFactory是一款PDF虚拟打印软件,但与其他虚拟打印机软件不同的是,它使用起来更加简单高效.由于无需Acrobat就能生成Adobe PDF文件,它可以帮助用户在系统没有连接打印机的情况下, ...

  8. 在Mac上也能轻松拥有Windows应用程序的简便方法

    一般而言,如果我们想要在Windows的环境下下载一款软件那是件很方便的事情.只要我们登陆软件的官网进行下载即可.但是如果我们使用的是Mac OS系统,很多用户就会发现,许多软件会出现不兼容的情况. ...

  9. MySQL优化篇(未完待续)

    一.优化SQL语句的一般步骤 1.通过 show status命令了解各种sql的执行频率 mysql客户端连接成功后,通过show[session|global] status命令,可以查看服务器的 ...

  10. k8s内网安装部署(二)

    续上篇 https://www.cnblogs.com/wangql/p/13397034.html 一.kubeadm安装 1.kube-proxy开启ipvs的前置条件 modprobe br_n ...