vue interceptors(拦截器)
拦截器 顾名思义: 就是半路个您劫持,
拦截器
其实在项目和自己写demo中,总会遇到请求方面需要在请求头里面做判断或者添加一些东西,
这时候 vue 中应用中axios的 interceptors 其的就能帮助我们做这些事情
拦截请求
比如需要在请求头里面加入 token和 签名 加强请求安全性。毕竟请求被攻击太多了
// 拦截请求
http.interceptors.request.use(config => {// 请求头添加access_token
const token = localStorage.getItem('TOKEN') ? JSON.parse(localStorage.getItem('TOKEN')) : ''
if (token && token.access_token ) {
config.headers['Access-Token'] = token.access_token.value
}
/*
* 处理post、put、delete请求
* 1、data为空时,默认传一个随机参数
* 2、根据data生成签名
* 3、转化data为查询参数格式
*/
if (config.method === 'post' || config.method === 'put' || config.method === 'delete') {
// 默认传一个数据
if (!config.data) {
config.data = {
t: new Date().getTime()
}
}
// 请求头添加签名
config.headers.Sign = util.createSign(config.data)
// 转化data数据格式
config.data = qs.stringify(config.data)
}
return config
}, error => {
Toast(error.message)
Indicator.close()
})
拦截响应
就去请求到数据了,做一些数据判断,比如没有注册之类的,可以跳转到用户注册页面。
也可以判断请求是的token 是否过期,给它重置。
// 拦截响应
http.interceptors.response.use(res => {
// 响应失败
if (!res.data.success) {
Toast(res.data.msg)
Indicator.close()
} /**
* refresh_token过期
* 1、清空本地token
* 2、刷新页面
*/
if (res.data.code === '004-1') {
localStorage.setItem('TOKEN', '')
window.location.reload()
} // 请先绑定手机号
if (res.data.code === '004-2') {
router.push({
name: 'bindMobile'
})
} return res.data
}, error => {
Toast(error.message)
Indicator.close()
})
请求错误
我一般都会在拦截和响应的 报错的 方法里面:加入自己写的组件比如
弹出框(错误消息)
还有就是那种 loading 的停止 动画 这不就完美了
可以结合 es6 中的 promise 来做请求 亦或是 es7 中的 async await,数据 来解决请求 回调地狱,
当然axios 中提供的 all 请求方式 让2个请求后才执行后面的操作,这样会跟方便,啧啧 ,简直了
下面是一些代码片段:
axios.all([api.getHomeList(), api.getshop()]).then(
axios.spread(function(acct, perms) {
// 两个请求现在都执行完成
//console.log(acct,perms)
})
);
真的感觉前端的变化太大了,快学不动了,还是加油加油吧。
vue interceptors(拦截器)的更多相关文章
- (vue.js)axios interceptors 拦截器中添加headers 属性
(vue.js)axios interceptors 拦截器中添加headers 属性:http://www.codes51.com/itwd/4282111.html 问题: (vue.js)axi ...
- vue axios拦截器 + 自编写插件 实现全局 loading 效果;
项目需求:用自定义的 .gif 图标实现全局 loading 效果:为避免在每个页面手动添加,且简单高效的实现,经查阅资料,最终采用了 vue axios拦截器 + 自编写 loading 插件:下面 ...
- vue --- axios拦截器+form格式请求体
在vue2.x中使用CLI生成的模板有很大改变,需要自己手动在main.ts同级目录下新建interceptors.ts interceptors.ts import axios from 'axio ...
- vue axios 拦截器
前言 项目中需要验证登录用户身份是否过期,是否有权限进行操作,所以需要根据后台返回不同的状态码进行判断. 第一次使用拦截器,文章中如有不对的地方还请各位大佬帮忙指正谢谢. 正文 axios的拦截器分为 ...
- flume1.8 Interceptors拦截器(五)
1. Flume Interceptors Flume有能力修改/删除流程中的events.这是在拦截器(interceptor)的帮助下完成的.拦截器(Interceptors)是实现org.apa ...
- springMVC之mvc:interceptors拦截器的用法
1.配置拦截器 在springMVC.xml配置文件增加: <mvc:interceptors> <!-- 日志拦截器 --> <mvc:interceptor> ...
- vue router拦截器的简单使用
之前,为了实现router跳转的每个页面的url上都带上addressCode,然后用了一下router拦截器,很好用,当然也可以专门封装一个方法来实现(跳转的页面上带有addressCode),不过 ...
- angular之interceptors拦截器
<!DOCTYPE html> <html ng-app="nickApp"> <head> <meta charset="UT ...
- springMVC <mvc:interceptors>拦截器的使用
首先在springMVC.xml配置如下代码 <!-- 拦截器 --> <mvc:interceptors> <bean class="com.base.Acc ...
随机推荐
- java:struts框架3(自定义拦截器,token令牌,文件上传和下载(单/多))
1.自定义拦截器: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ...
- Leetcode基础篇30天30题系列之数组:模拟计算法
作者:丁宋涛 数组:加一 题干: 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个整 ...
- 论文翻译:HetConv-Heterogeneous Kernel-Based Convolutions for Deep CNNs
Abstract 我们提出了一种新颖的深度学习架构,其中卷积操作利用了异构内核.与标准卷积运算相比,所提出的HetConv(基于异构内核的卷积)减少了计算(FLOPs)和参数的数量,同时仍保持表示效率 ...
- 【Android Apk重新签名报错re-sign.jar之解决方法】
故障现象:
- angular [NgClass] [NgStyle],NgIf,[ngSwitch][ngSwitchCase]
[NgClass] CSS 类会根据表达式求值结果进行更新,更新逻辑取决于结果的类型: string - 会把列在字符串中的 CSS 类(空格分隔)添加进来, Array - 会把数组中的各个元素作 ...
- MSF魔鬼训练营第一章 初识Metasploit
1.1.4渗透测试过程环节 PTES标准7个阶段 1.前期交互阶段 收集客户需求.准备测试计划.定义测试范围与边界.定义业务目标.项目管理与规划等 2.情报搜集阶段 公开来源信息查 ...
- flowable+tomcat部署flowable项目,在线画流程图
参考: flowable+tomcat部署flowable项目,在线画流程图
- 26. Remove Duplicates from Sorted Array(代码思路新奇)
Given a sorted array, remove the duplicates in-place such that each element appear only once and ret ...
- 无法安装 Microsoft Visual Studio 2010 Service Pack 1,因为此计算机的状态不支持此安装。有关如何解决此问题的说明,请参阅 Microsoft 下载中心网站上的自述文件
解决办法: 32 位系统删除:HKEY_LOCAL_MACHINE\Software\Microsoft\VSTO Designtime Setup\ 64 位系统删除:HKEY_LOCAL_MACH ...
- 【原创】Themida 2260 虚拟机 FISH 初探(一)
标 题: [原创]Themida 2260 虚拟机 FISH 初探(一)作 者: xiaohang时 间: 2016-03-03,00:39:37链 接: http://bbs.pediy.com/s ...