首页 > 其他分享 >axios 拦截器实现原理

axios 拦截器实现原理

时间:2024-05-06 16:44:49浏览次数:30  
标签:axios 请求 Axios 响应 拦截器 Promise 原理 函数

Axios 拦截器是 Axios 提供的一种强大功能,允许你在请求发送到服务器之前或响应返回客户端之前对其进行修改或处理。拦截器主要有两种:请求拦截器(request interceptors)和响应拦截器(response interceptors)。

实现原理

  1. 拦截器数组:
    Axios 内部维护了两个数组,一个用于存储请求拦截器,另一个用于存储响应拦截器。每个拦截器都是一个函数,这些函数按照它们在数组中定义的顺序被依次执行。

  2. 拦截器函数的参数:

    • 请求拦截器:通常接收一个配置对象(通常是请求的配置)作为参数,并返回一个配置对象或 Promise。
    • 响应拦截器:接收一个响应对象作为参数,并返回一个响应对象或 Promise。
  3. 拦截器的执行:

    • 当 Axios 发起一个请求时,它会首先遍历并执行请求拦截器数组中的每个函数。这些函数可以对请求进行预处理,比如添加请求头、处理错误等。
    • 一旦请求被发送并得到响应,Axios 会遍历并执行响应拦截器数组中的每个函数。这些函数可以对响应进行后处理,比如数据转换、错误处理等。
  4. Promise 链:
    由于拦截器函数可以返回 Promise,因此可以很容易地在拦截器中执行异步操作。Axios 会等待每个拦截器的 Promise 解决后再继续执行后续的拦截器或请求/响应处理。

  5. 取消拦截器:
    Axios 提供了取消拦截器的方法,允许你在不再需要某个拦截器时将其从数组中移除。

  6. 使用场景:

    • 身份验证:在请求拦截器中添加身份验证令牌(token)。
    • 错误处理:在响应拦截器中统一处理网络错误或服务器错误。
    • 数据转换:在响应拦截器中处理服务器返回的数据,比如解析 JSON 数据或进行其他格式转换。
    • 日志记录:在请求和响应拦截器中记录请求的详细信息,以便进行调试或监控。

示例代码

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

注意事项

  • 拦截器是按顺序执行的,因此它们的顺序很重要。
  • 由于拦截器可以修改请求或响应数据,因此在使用它们时要特别小心,确保不要意外地修改了你不需要修改的数据。
  • 如果在拦截器中抛出了错误或返回了一个被拒绝的 Promise,那么后续的拦截器和请求/响应处理将不会被执行。

标签:axios,请求,Axios,响应,拦截器,Promise,原理,函数
From: https://www.cnblogs.com/beileixinqing/p/18175323

相关文章

  • 《深度学习原理与Pytorch实战》(第二版)(三)11-15章
    第11章神经机器翻译器——端到端机器翻译神经机器翻译,google旗下的NMT编码-解码模型:用编码器和解码器组成一个翻译机,先用编码器将源信息编码为内部状态,再通过解码器将内部状态解码为目标语言。编码过程对应了阅读源语言句子的过程,解码过程对应了将其重组为目标语言的过程——......
  • 操作系统原理
    计算机硬件的五大核心组件控制器:计算机的指挥系统,负责控制所有硬件的运行运算器:负责数学运算和逻辑运算存储器:内存:比如内存条,基于电存取数据,断点数据全部丢失;用于临时保存数据,存取速度快;外存:用于永久保存数据,断电数据仍然存在;1.机械硬盘:存取数据慢,基于磁存取数据2.固态硬......
  • 火箭上天和飞机上天的原理有何不同?
    火箭靠向后喷射高温高压气体产生的反作用力飞行。飞机靠机翼上下气流的压差产生的升力飞行。参考:https://baijiahao.baidu.com/s?id=1641924575181476234&wfr=spider&for=pc>>空气动力学:空气动力学是力学的一个分支,研究飞行器或其他物体在同空气或其他气体作相对运动情况下的受......
  • [转]IRIG-B码授时工作原理
    在授时设备中有一种是B码授时的,但是大部分人不太清楚何为B码授时?这种类型的授时工作原理是怎么样?首先我们要知道什么是B码,然后再介绍它的授时工作原理,B码是一种电力术语,它是IRIG-B码的通俗叫法,英文全称是inter-rangeinstrumentationgroup-B,是在2020年公布的电力词汇,B码起源于20......
  • 《深度学习原理与Pytorch实战》(第二版)(二)
    第6章手写数字加法器——迁移学习迁移学习允许训练集和测试集的数据有不同的分布、目标、领域;而一般的监督学习要求训练集和测试集上的数据有相同的分布特性一个有意思的想法:大公司运用大数据训练大模型,再将这些模型迁移到小公司擅长的特定垂直领域中,这样就可以将泛化的大模......
  • 《微机运行原理》
    微机的运行原理涉及到计算机硬件和软件的相互配合。简单来说,微机的运行原理可以分为以下几个方面:硬件层面:中央处理器(CPU):是微机的大脑,负责执行程序中的指令。内存(RAM):临时存储数据和程序,供CPU快速访问。存储设备:如硬盘驱动器(HDD)、固态驱动器(SSD)等,用于长期存储数据和程序主板(Mot......
  • redisson分布式锁原理
    参考:图灵课堂 https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95https://blog.csdn.net/asd051377305/article/details/108384490分布式锁的引入当在单机单线程情况下,是不用考虑任何并发问题的,一切都是那么的美好,那么的顺其自然。在单机多线程情况下,就要考虑......
  • Oracle之数据库一致性读的原理
    1.概述在Oracle数据库中,undo主要有三大作用:提供一致性读(ConsistentRead)、回滚事务(RollbackTransaction)以及实例恢复(InstanceRecovery)。2.原理一致性读是相对于脏读(DirtyRead)而言的。假设某个表T中有10000条记录,获取所有记录需要15分钟时间。当前时间为9点整,某用户A发出一条......
  • 《深度学习原理与Pytorch实战》(第二版)
    第1章深度学习简介深度学习——利用深度人工神经网络来进行自动分类、预测和学习的技术,深度学习=深度人工神经网络超过三层的神经网络都可以叫做深度神经网络人工神经网络的关键算法——反向传播算法深度网络架构,即整个网络体系的构建方式和拓扑连接结构,主要分为3种:......
  • 原子操作的实现原理与使用-03
    所谓“原子操作”就是这个操作不会被打断。Linux有2种原子操作:原子变量、原子位。 原子变量的内核操作函数原子变量的操作函数在Linux内核文件arch\arm\include\asm\atomic.h中。原子变量类型如下,实际上就是一个结构体(内核文件include/linux/types.h):  原子变量的内......