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 ...
随机推荐
- 项目中使token
项目中使token 如果项目架构采用前后端分离,并采用分布式架构,通过定义接口API,与前端进行数据交互,前端通过html前行实现.若加入移动端(Andriod,ios)实现,可直接使用API接口实现 ...
- Pycharm最新激活码汇总,pycharm2019激活码
Pycharm激活码汇总 激活过程如下: 1.双击运行桌面上的Pycharm图标,进入下图界面,选择Do not import settings,之后选择OK,进入下一步. 2.拖动到底部,选择Acc ...
- CentOS 7 卸载 mysql
查看是否安装 mysql rpm -qa | grep -i mysql yum list install mysql* 卸载 yum方式 yum remove mysql mysql-server ...
- python 并发编程 io模型 目录
python 并发编程 IO模型介绍 python 并发编程 socket 服务端 客户端 阻塞io行为 python 并发编程 阻塞IO模型 python 并发编程 非阻塞IO模型 python 并 ...
- 听说这样可以加快oracle入表速度
oracle 用occi编程的时候,批量提交使用绑定变量的方式,主要瓶颈再sql语句解析上,改成merge into后效率没有变化,但是使用绑定变量方法,能加快速度
- pandas中数据结构-Series
pandas中数据结构-Series pandas简介 Pandas是一个开源的,BSD许可的Python库,为Python编程语言提供了高性能,易于使用的数据结构和数据分析工具.Python与Pan ...
- Spring jar包详解(转)
spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-moc ...
- phpstorm配置phpunit进行单元测试
1.配置单元测试目录: (1)autoload.php <?php function autoloader($dir){ spl_autoload_register(function($name ...
- ActiveMQ消息过滤
前言 ActiveMQ提供了一种机制,使用它,消息服务可根据消息选择器中的标准来执行消息过滤.生产者可在消息中放入应用程序特有的属性,而消费者可使用基于这些属性的选择标准来表明对消息是否感兴趣.这就简 ...
- CentOS7下载与安装错误全记录
这篇文章记录安装CentOS7过程错误全记录,供大家和自己参考 起因:笔记本用的win10系统,开启热点的时候,总是10分钟就自动关闭.于是折腾linux系统,平时用win10系统,也切换到linux ...