Vue:对axios进行简单的二次封装
主要做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进行简单的二次封装的更多相关文章
- 使用Vue CLI 3将基于element-ui二次封装的组件发布到npm
前言:之前在网上找的好多都是基于vue-cli 2.x的,而使用vue-cli 3的文章比较少,Vue CLI 3 中文文档,所以我在自己尝试的时候把几篇文章结合了一下,调出来了我想要的模式,也就是V ...
- vue中axios的简单使用
我们一般在用jq的时候会使用到ajax来进行与服务器之间的交流,vue中也提供了相应的类似于ajax的方法-axios来进行与服务器之间的数据传递 现在的这篇是最简单的使用,后续会添加上来复杂的使用 ...
- axios简单的二次封装
import axios from 'axios' import { Message} from 'element-ui' import store from '../store' //vuex im ...
- Vue 给axios做个靠谱的封装(报错,鉴权,跳转,拦截,提示)
需求及实现 统一捕获接口报错 弹窗提示 报错重定向 基础鉴权 表单序列化 用法及封装 用法 // 服务层 , import默认会找该目录下index.js的文件,这个可能有小伙伴不知道可以去了解npm ...
- vue项目中对axios的二次封装
近来在使用vue重构公司m站时,使用了axios来进行数据的请求,由于项目的需要,对axios进行了二次封装,点击进入axios //引入axios import axios from 'axios' ...
- vue中axios使用二:axios以post,get,jsonp的方式请求后台数据
本文为博主原创,转载请注明出处 axios在上一篇中讲过:vue中axios使用一:axios做拦截器,axios是请求后台资源的模块,用来请求后台资源. axios本身是支持get,post请求后台 ...
- vue学习【二】vue结合axios动态引用echarts
大家好,我是一叶,本篇是vue学习的第二篇,本篇将要讲述vue结合axios动态引用echarts. 在vue中,异步刷新使用的是axios,类似于大家常用的ajax,其实axios已经是vue的第二 ...
- 【vue】axios二次封装,更好的管理api接口和使用
在现在的前端开发中,前后端分离开发比较主流,所以在封装方法和模块化上也是非常需要掌握的一门技巧.而axios的封装也是非常的多,下面的封装其实跟百度上搜出来的axios封装或者axios二次封装区别不 ...
- vue中axios的二次封装
我们做项目时,虽然axios也可以直接拿来用,但是对接口比较零散,不太好进行维护,也会产生大量的重复代码,所以我在这对axios进行了统一接口处理 第一步,先在src中的公共文件夹中如utils里新建 ...
随机推荐
- rbd的数据在哪里
创建一个rbd [root@mytest ~]# rbd create test1 --size 4000 查看rbd信息 [root@mytest ~]# rbd info test1 rbd im ...
- 使用 ffmpeg 命令直播推流
CMD使用到的命令 D: -> 表示进入D盘cd /live -> 表示进入某个路径 执行条件 1.ffmpeg.exe 与视频放在同一目录下,纯英文目录2.执行以上命令进入到ffmpeg ...
- html 小米商城导航栏示例
1.小米导航栏示例 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=&q ...
- 深度分析:Java多线程,线程安全,并发包
1:synchronized(保证原子性和可见性) 1.同步锁.多线程同时访问时,同一时刻只能有一个线程能够访问使synchronized修饰的代码块或方法.它修饰的对象有以下几种: 修饰一个代码块, ...
- 面试必看!靠着这份字节和腾讯的面经,我成功拿下了offer!
准备 敲定了方向和目标后就开始系统准备,主要分为以下几个方面来准备. 算法题 事先已经看过别人的社招面经知道头条每轮技术面都有算法题,而这一块平时练习的比较少,校招时刷的题也忘记了很多.因此系统复习的 ...
- iMindMap组织结构视图在工作上的应用体现在哪些方面
iMindMap的组织结构图视图,可以将信息.想法和流程整合起来.本文,我们将讲述iMindMap组织结构图视图的3个实例应用. iMindMap组织结构视图 简化您的工作流程 通过在工作中构建组织结 ...
- python中操作数据库
python中要操作数据库,要使用该数据库在python中对应的驱动库,本文介绍python操作mysql数据库 1.首先安装pymysql 2.导入库 3.建立连接 4.建立游标 5.发起请求 6. ...
- Java中对象在内存中的大小、分配等问题
Java创建一个对象的过程 是否对象指向的类已经加载到内存了 如果没有加载,就要经过load.linking(verification.preparation.resolution).initiali ...
- yii2.0 访问控制器下的方法时出现 Object Not Found! 解决办法
yii2.0 访问控制器下的方法时出现 Object Not Found! 时 可以查看(apache) 入口文件index.php 的同级有没有 .htaccess 文件 没有.htaccess ...
- iOS中跑马灯效果小结
时光过得好快,记忆中刚刚从春节返回没有多久,清明.五一已飞逝而过,眨眼已到盛夏季节.不过还好,济南这两年不算太热,刚开始升温几天,一场及时雨总能让温度保持适宜.为了纪念一下青春的尾巴,也为了能有个健康 ...