axios拦截器

拦截器介绍

一般在使用axios时,会用到拦截器的功能,一般分为两种:请求拦截器、响应拦截器。

  1. 请求拦截器 在请求发送前进行必要操作处理,例如添加统一cookie、请求体加验证、设置请求头等,相当于是对每个接口里相同操作的一个封装;

  2. 响应拦截器 同理,响应拦截器也是如此功能,只是在请求得到响应之后,对响应体的一些处理,通常是数据统一处理等,也常来判断登录失效等。

比如一些网站过了一定的时间不进行操作,就会退出登录让你重新登陆页面,当然这不用拦截器你或许也可以完成这功能,但是会很麻烦而且代码会产生大量重复,所以我们需要用到拦截器

应用场景:
1:每个请求都带上的参数,比如token,时间戳等。
2:对返回的状态进行判断,比如token是否过期

axios的拦截器作用非常大。axios的拦截器分为请求拦截器跟响应拦截器,都是可以设置多个请求或者响应拦截。每个拦截器都可以设置两个拦截函数,一个为成功拦截,一个为失败拦截。在调用axios.request()之后,请求的配置会先进入请求拦截器中,正常可以一直执行成功拦截函数,如果有异常会进入失败拦截函数,并不会发起请求;调起请求响应返回后,会根据响应信息进入响应成功拦截函数或者响应失败拦截函数。

因此,我们可以在拦截器中处理一些请求的统一处理。比如在请求拦截器中设置请求头,处理统一的请求数据,在响应拦截去中根据响应状态码做统一的提示信息,整理响应数据等。

在请求或响应被 then 或 catch 处理前拦截它们。

// 官方用例
// 1.添加请求拦截器
axios.interceptors.request.use(function (config) {// 在发送请求之前做些什么return config;}, function (error) {// 对请求错误做些什么return Promise.reject(error);});
​
// 2.添加响应拦截器
axios.interceptors.response.use(function (response) {// 对响应数据做点什么return response;}, function (error) {// 对响应错误做点什么return Promise.reject(error);});

1.axios-请求拦截器

目标

  • 什么是请求

  • 什么是axios的请求拦截器

场景

  • 在发起请求之前, 最后对要发送的请求配置对象进行修改

  • 例如: 如果本地有token, 携带在请求头给后台

    // 添加请求拦截器--代码实现案例:仅供参考
    axios.interceptors.request.use(function (config) {// 在发送请求之前做些什么, 如果vuex里有token携带在请求头中if (store.state.token.length > 0 && config.headers.Authorization === undefined) {// 发起请求之前, 把token携带在请求头上(表明自己身份)config.headers.Authorization = 'Bearer ' + store.state.token}return config
    }, function (error) {// 对请求错误做些什么return Promise.reject(error)
    })
  • 所有api接口里以后暂时不用自己携带Headers+Token了,简略代码,统一管理

小结

  1. 请求拦截器时候时候执行?

    • 在发起请求最后一刻执行

2.axios-响应拦截器

目标

  • 什么是响应

  • 什么是axios的响应拦截器

场景

  • 在响应回来后, 马上执行响应拦截器函数

  • 例如: 判断是否错误401, 统一进行权限判断

    // 添加响应拦截器--代码实现案例:仅供参考
    axios.interceptors.response.use(function (response) { // 当状态码为2xx/3xx开头的进这里// 对响应数据做点什么return response
    }, async function (error) { // 响应状态码4xx/5xx进这里// 对响应错误做点什么if (error.response.status === 401) { // 身份过期/token无效//  1.清空vuex的token store.commit('setToken', '')store.commit('setRefreshToken', '')// 2. 清空本地token localStorage.removeItem('token')localStorage.removeItem('refresh_token')//  跳转到登录页面登录router.push({path: '/login'})}     return Promise.reject(error)
    })
    

小结

  1. 响应拦截器什么时候执行?

    • 在响应回来以后

  2. 什么时候进响应拦截器成功, 什么时候进失败?

    • 2xx/3xx开头的响应状态码进入成功

    • 4xx/5xx开头的响应状态码进入失败

什么是axios拦截器?有哪些作用和使用场景相关推荐

  1. axios拦截器作用及工作流程详解

    axios 拦截器 在请求或响应被then或catch处理之前拦截它们 作用: 主要是在axios请求和响应之前拦截请求和响应数据.拦截器有两种,请求拦截器一般会统一在请求头中添加token.响应拦截 ...

  2. axios拦截器_78.1K 的 Axios 项目有哪些值得借鉴的地方

    Axios 是一个基于 Promise 的 HTTP 客户端,同时支持浏览器和 Node.js 环境.它是一个优秀的 HTTP 客户端,被广泛地应用在大量的 Web 项目中. 由上图可知,Axios ...

  3. vue2中使用axios,以及axios拦截器的配置

    目录 一.vue2项目中如何实现异步请求 1.axios:是一个基于Promise的网络请求库.既可以在node.js(服务器端)使用,也可以在浏览器端使用 2.vue中的使用方法 ​ (2)引用方法 ...

  4. 关于vue中axios拦截器的使用

    预期目标:解决请求任意接口之前进行统一拦截判断,看是否返回500或404等错误并在页面给出错误提示. 一.刚开始看官方文档,如下: 备注:将代码加到页面中发现并未起作用,百度谷歌搜索一番,发现都是千篇 ...

  5. axios拦截器、ElementUI组件的使用

    一.axios拦截器 1.axios模块的作用 是对基于http请求的封装.在浏览器对异步请求对象XMLHttpRequest进行封装 2.拦截器 ​ (1)请求拦截器:对客户端发起的请求进行统一的前 ...

  6. Axios拦截器(Interceptors)

    Axios拦截器(Interceptors) axios拦截器主要分为两种:请求拦截器和响应拦截器. 请求拦截器 请求拦截器作用是在发出请求时,拦截下用户的请求,执行完一系列处理再发送出去(像添加co ...

  7. token和axios拦截器

    Token实现JWT身份认证 1.1-Token介绍 1.为什么要有token? 默认情况下,HTTP是一个无状态协议,也就是说任何浏览器都可以访问服务器,但是服务器并不能知道浏览器到底是属于哪个用户 ...

  8. axios拦截器应用场景

    一:什么是axios拦截器.为什么要使用axios拦截器? 在vue项目中,我们通常使用axios与后台进行数据交互,axios是一款基于promise封装的库,可以运行在浏览器端和node环境中.它 ...

  9. axios 拦截器分析

    在 Axios 中设置拦截器很简单,通过 axios.interceptors.request 和 axios.interceptors.response 对象提供的 use 方法,就可以分别设置请求 ...

最新文章

  1. Excel、Exchange和C#
  2. Java基础学习总结(12)——一哈希编码HashCode
  3. 自动化测试之alert弹窗的切换
  4. c语言清空输入缓冲区函数,c语言:C语言清空输入缓冲区在标准输入(stdin)情况 -电脑资料...
  5. void Update ( ) 更新 void FixedUpdate ( )
  6. Replace Error Code with Exception(以异常取代错误码)
  7. python相关函数_python列表相关函数
  8. HttpURLConnection的流式输出的缺陷和解决方法
  9. SpringBoot自定义HttpMessageConverter
  10. Webservice 安全性访问
  11. paip.网页右键复制菜单限制解除解决方案
  12. npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! taoism@1.0.0 dev: `webpack-dev-server --inline --
  13. python画二次函数图像的顶点坐标为_Python绘制函数图像
  14. 去除加粗的css,css如何取消加粗
  15. 在python中画正态分布图像
  16. ACD_把dwg像控件一样放到界面
  17. 查看自己本地IP地址方法
  18. JSP图书借阅管理系统
  19. qt linux不能读写u盘文件,Qt读取U盘文件内容
  20. python相关岗位面试题总结(五)(持续更新)

热门文章

  1. 服务器raid模式修改成ide,SkyIAR 2.57 IDE_AHCI_RAID模式修改方案
  2. 关于共享单车的一点思考
  3. 人工智能发展史论文_有史以来15篇最佳AI研究论文
  4. tushare 股票分类数据
  5. Python之put接口
  6. c语言put语句的作用,C语言中put()与puts()的区别?
  7. 遗传算法求解机场停机位优化分配(含源代码)
  8. 菜鸟来也!50行Python代码一键整理桌面
  9. 桌面文件太多?这个神器一键整理只需三秒!
  10. 租用游艇问题---动态规划