写了很多的vue项目,经常碰到需要做请求拦截的情况,从发请求前的token判断到对返回信息的响应,我自己在不同的阶段是用不同的方式处理的。

入门阶段

记得当时做的第一个项目,是需要在请求头部加入登录是获取到的token,每个接口都需要,因此就有了下面的代码:

每次请求前,拿到token,再封装到头部信息中,再传递给后台。

公共方法

后来,需求升级了,在请求前需要判断token是否存在,是否过期;在后台返回结果后,需要根据不同的返回状态的给出不同的提示。当时,项目基本上都已经写完了,几十个接口,每个接口请求前后都要添加一个方法,感觉超级麻烦额,为了偷懒,我竟然神奇的想到了使用全局方法。

先在main.js中定义两个全局然后在每个请求前后分别调用这两个全局方法,我真的是每个请求都有加:

请求拦截

大概是半年后吧,自我感觉能比较熟练的使用vue做项目了,才想起来认真看一下官方文档,这个才发现了有请求拦截这么好用的东东。。。

一直都是用的axios,之前都是直接在main.js中引入

现在要做请求拦截,所以先在新建一个http.js文件,然后在http.js中引入axios然后暴露出去,再到main.js中引入http.js:

http.js

main.js

再回到http.js中,因为我这里用到了一些其他的东西,比如后台地址变量sessiondate.add、本地存储的token,所以在前面还引入了一些其他的东西

现在开始写请求前的拦截:判断是否有token,如果有,将token存入请求头部:

这样,在后面每次请求的时候,不用再获取token什么的了。

接下来就是写对返回结果的响应了:

一次性处理多种情况,简单省事。

上面的方式是token存储在cookie里面,但是也有很多时候,token是存在vuex里面的,然后在vuex里面再讲token存在本地:

存储

在http.js中使用

vue请求拦截的更多相关文章

  1. Vue添加请求拦截器

    一.现象 统一处理错误及配置请求信息 二.解决 1.安装 axios  , 命令: npm install axios --save-dev 2.在根目录的config目录下新建文件 axios.js ...

  2. vue的Http请求拦截及处理

    /*公共加载遮罩*/ (function($) { $.fn.jqLoading = function(option) { var defaultVal = { backgroudColor : &q ...

  3. vue 路由拦截、axios请求拦截

    路由拦截 项目中,有些页面需要登录后才能进入,例如,在某页面A,用户在操作前需要先进入登录页(此时需要将上一页的地址(/survey/start)作为query存入login页面的地址中,如: htt ...

  4. 细说vue axios登录请求拦截器

    当我们在做接口请求时,比如判断登录超时时候,通常是接口返回一个特定的错误码,那如果我们每个接口都去判断一个耗时耗力,这个时候我们可以用拦截器去进行统一的http请求拦截. 1.安装配置axios cn ...

  5. vue中 请求拦截 响应拦截设置

    第一,在项目的src中新建http.js文件,将以下代码复制进去 import axios from 'axios' import { Message, Loading } from 'element ...

  6. vue 路由拦截器和请求拦截器

    路由拦截器 已路由为导向 router.beforeEach((to,from,next)=>{ if(to.path=='/login' || localStorage.getItem('to ...

  7. vue+axois 封装请求+拦截器(请求锁+统一错误)

     需求 封装常用请求 拦截器-请求锁 统一处理错误码 一.封装常用的请求 解决痛点:不要每一个模块的api都还要写get,post,patch请求方法.直接将这些常用的方法封装好. 解决方案:写一个类 ...

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

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

  9. Vue之拦截与响应拦截

    vue中有一个拦截方法,当我们发起请求或者请求回来的时候,我们需要做一定的数据过滤或者拦截 下面是在开发项目时进行的一个axios的请求封装: 拦截器:就是我们在请求之前进行的一个操作比如说,我们可以 ...

随机推荐

  1. 20155208徐子涵 2016-2017-2 《Java程序设计》第2周学习总结

    20155208徐子涵 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 第三章 基础语法 3.1 类型.变量与运算符 • 关键字:在定义java文件名的时候要 ...

  2. 一次scrapy失败的提示信息:由于连接方在一段时间后没有正确答复或连接的主机没有反 应,连接尝试失败

    2017-10-31 19:09:26 [scrapy.extensions.logstats] INFO: Crawled 8096 pages (at 67 pages/min), scraped ...

  3. KMP算法自我理解 和 模板

    字符串   abcd abc abcd abc 匹配串   cdabcd 匹配串的 next  0 0 0 0 1 2: 开始匹配 abcd abc abcd abc cd abc d a,d 匹配失 ...

  4. hdu1542 Atlantis 线段树--扫描线求面积并

    There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Some ...

  5. 【转】基于Map的简易记忆化缓存

    看到文章后,自己也想写一些关于这个方面的,但是觉得写的估计没有那位博主好,而且又会用到里面的许多东西,所以干脆转载.但是会在文章末尾写上自己的学习的的东西. 原文出处如下: http://www.cn ...

  6. CTEX(LaTeX) 编译 中文

    CTEX 中文编码&编译问题 #win10 tex 文档为 GBK 编码 https://zhidao.baidu.com/question/93645685.html \documentcl ...

  7. windows知识

    文章目录 系统 修改远程桌面的端口号 IE选项中reset web setting不可用(灰色)的解决办法 重装系统后,修改默认程序安装目录.我的文档.桌面 路径 Keep network addre ...

  8. Map接口的使用

    1.Map定义: Collection是孤立存在的,向集合中存储元素是一个一个放,Map中的集合 存储是成对,通过键找到值,键和值是映射关系. 2.注意: Map集合中不能包含重复的键,但是可以包含重 ...

  9. C#窗体模拟键盘按键(组合键)产生事件 ---- 通过keybd_event()函数

    如何模拟键盘按键触发产生的事件,比如模拟按下Alt + F4 关闭当前程序,Ctrl+Shift 切换输入法等 可以通过win32api 键盘事件 keybd_event() 来实现 1.定义键盘按键 ...

  10. 20165308《Java程序设计》第7周学习总结

    20165308<Java程序设计>第7周学习总结 教材学习内容总结 第十一章:JDBC与MySQL数据库 MySQL数据库管理系统 启动MySQL数据库服务器 MySQL客户端管理工具 ...