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 ...
随机推荐
- 阶段3 2.Spring_07.银行转账案例_9 基于子类的动态代理
代理一个普通的java类 导入cglib的包 它还有一个asm的依赖.会自动加进来 创建cglib的文件夹.把proxy里面的Client和Producer复制到cglib文件夹 Producer不实 ...
- 网易云课堂_C++程序设计入门(下)_期末考试_期末考试在线编程题目
期末考试在线编程题目 返回考试 本次考试题目一共两个,在考试期间可以不限制次数地提交 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间 ...
- React-Native中props用法详解
props就是属性,是为了描述一个组件的特征而存在的.它是父组件传递给子组件的. 使用props 通过上一个页面传递 新建一个 PropsTest.js 文件 1 2 3 4 5 exprot def ...
- stringbuffer.tostring引发的 Java heap space
今天在测试“生成报告“功能时,出现了这个问题,java抛出java.lang.OutOfMemoryError: Java heap space: 由于开发使用的tomcat是统一配置的,而且其他地方 ...
- 20个python项目--图片转字符画
转自实验楼:https://www.shiyanlou.com/courses/370/learning/?id=1191 代码: # -*- coding:utf-8 -*- from PIL im ...
- 20191209 Linux就该这么学(5)
5. 用户身份与文件权限 5.1 用户的身份和能力 Linux 系统的管理员之所以是 root,并不是因为它的名字叫 root,而是因为该用户的身份号码即 UID( User IDentificati ...
- DVWA、 DSVM 环境搭建简述
DVWA(http://www.dvwa.co.uk/)是一个本地的漏洞演示环境基于PHP和Mysql . 另外还有基于Python的DSVM部署起来也十分简单.(https://github.com ...
- ideal项目启动及问题
Error running 'xxx项目' Command line is too long(idea版) 错误] Error running ‘xxx项目’: Command line is too ...
- 字典树(trie树) 后缀树 广义后缀树
转自:http://www.cnblogs.com/dong008259/archive/2011/11/11/2244900.html (1)字典树(Trie树) Trie是个简单但实用的数据结构, ...
- url简单加密
使用urlencode和urldecode可以对传输的字符串进行简单的加密,也可用于将汉字转换为16进制数字进行传输,每个16进制数前面都带一个% urlencode : 将中文转换为16进制数 ur ...