拦截器 顾名思义: 就是半路个您劫持,

拦截器

其实在项目和自己写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(拦截器)的更多相关文章

  1. (vue.js)axios interceptors 拦截器中添加headers 属性

    (vue.js)axios interceptors 拦截器中添加headers 属性:http://www.codes51.com/itwd/4282111.html 问题: (vue.js)axi ...

  2. vue axios拦截器 + 自编写插件 实现全局 loading 效果;

    项目需求:用自定义的 .gif 图标实现全局 loading 效果:为避免在每个页面手动添加,且简单高效的实现,经查阅资料,最终采用了 vue axios拦截器 + 自编写 loading 插件:下面 ...

  3. vue --- axios拦截器+form格式请求体

    在vue2.x中使用CLI生成的模板有很大改变,需要自己手动在main.ts同级目录下新建interceptors.ts interceptors.ts import axios from 'axio ...

  4. vue axios 拦截器

    前言 项目中需要验证登录用户身份是否过期,是否有权限进行操作,所以需要根据后台返回不同的状态码进行判断. 第一次使用拦截器,文章中如有不对的地方还请各位大佬帮忙指正谢谢. 正文 axios的拦截器分为 ...

  5. flume1.8 Interceptors拦截器(五)

    1. Flume Interceptors Flume有能力修改/删除流程中的events.这是在拦截器(interceptor)的帮助下完成的.拦截器(Interceptors)是实现org.apa ...

  6. springMVC之mvc:interceptors拦截器的用法

    1.配置拦截器 在springMVC.xml配置文件增加: <mvc:interceptors> <!-- 日志拦截器 --> <mvc:interceptor> ...

  7. vue router拦截器的简单使用

    之前,为了实现router跳转的每个页面的url上都带上addressCode,然后用了一下router拦截器,很好用,当然也可以专门封装一个方法来实现(跳转的页面上带有addressCode),不过 ...

  8. angular之interceptors拦截器

    <!DOCTYPE html> <html ng-app="nickApp"> <head> <meta charset="UT ...

  9. springMVC <mvc:interceptors>拦截器的使用

    首先在springMVC.xml配置如下代码 <!-- 拦截器 --> <mvc:interceptors> <bean class="com.base.Acc ...

随机推荐

  1. 阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_2 请求参数绑定实体类型

    参数封装到javaBean对象中 创建新的包domain.在下面新建Account 实现序列化 的接口,定义几个属性 生成get和set.还有toString的方法 表单 重新发布tomcat jav ...

  2. python学习笔记:(十四)面向对象

    1.类(class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法 2.类变量: 类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之外.类变量通 ...

  3. nmon服务器监控工具的使用安装

    nmon是一个监控服务器性能的工具 目录 1.安装nmon 2.数据采集 1.安装nmon nmon是一种linux服务器性能监控工具,他还提供了很好的图表结果展示功能.本篇以centos6.5系统为 ...

  4. 使用boost库获取文件夹下所有文件名字

    最近整理项目发现一个曾经找了好久的有用的代码片段,就是获取文件夹下所有文件的名字,和当前文件的绝对路径. 记录一下. 使用的是boost库, #include <boost/filesystem ...

  5. java:CSS(定位,组合选择符,边距,Float,Table的样式,显示和隐藏,换行,盒子模型,iframe和frameset框架)

    1.绝对定位,相对定位,fixed定位(指浏览器窗口定位): <!DOCTYPE html> <html> <head> <meta charset=&quo ...

  6. [开发技巧]·TopN指标计算方法

    [开发技巧]·TopN指标计算方法 ​ 1.概念介绍 在图片分类的中经常可以看到Top-1,Top-5等TopN准确率(或者时错误率). 那这个TopN是什么意思呢?首先Top-1准确率最好理解,就是 ...

  7. vue如何实现热更新

    我们都知道,对于node来说,前端vue代码的迭代节奏是很快的,可能一周要迭代几次,但是node的迭代却没那么平凡,可能一周更新一次甚至更久,那么为了node服务的稳定,减少node服务的发布次数,是 ...

  8. jQ的toggle() 方法

    语法:$(selector).toggle(speed,callback,switch) 实例: <script src="js/jquery.min.js">< ...

  9. iview Upload组件多个文件上传

    使用  iview Upload 上传组件 手动上传 包括单个文件和多个文件 思路:创建一个数组 把需要上传的文件 push到这个数组里面 1.引用组件 2.手动上传,根据官方文档 设置:before ...

  10. (转)Jenkins2.0 Pipeline 插件执行持续集成发布流程 - git -资料 - 不错的文档

    1.Jenkins 2.0 的精髓是 Pipeline as Code Jenkins 2.0 的精髓是 Pipeline as Code,是帮助 Jenkins 实现 CI 到 CD 转变的重要角色 ...