当前位置: 首页 > news >正文

axios相关知识点

一、基本概念

1、基于Promise:Axios通过Promise实现异步请求,避免了传统回调函数导致的“回调地狱”问题,使得代码更加清晰和易于维护。

2、跨平台:Axios既可以在浏览器中运行,也可以在Node.js环境中使用,为前后端开发提供了统一的接口。

3、HTTP请求方法:支持GET、POST、PUT、DELETE等多种HTTP请求方法,满足不同的数据交互需求。

//axios基础封装
import axios from "axios";
import { ElMessage } from "element-plus";//创建一个可以发起请求获得相应响应的实例
const httpInstance = axios.create({timeout:50000
})//配置拦截器
//axios请求拦截器
httpInstance.interceptors.request.use(config => {return config
},e =>Promise.reject(e))//axios响应拦截器
httpInstance.interceptors.response.use(res =>res.data,e =>{if(e.response.status==401){ElMessage.error("请先登录")//跳转登录页面}else{ElMessage({type:'error',message:'请重新登录'+e})}return Promise.reject(e)
})export default httpInstance //对外暴露,用于在其他位置调用

二、为什么对axios进行封装?

Axios 是一个基于 promise 的 HTTP 客户端,用于浏览器和 node.js 环境,能够发送异步 HTTP 请求到 REST 端点并处理响应。尽管 Axios 已经提供了非常丰富的功能,但在实际项目中,我们通常会对其进行封装,原因主要有以下几点:

1、统一请求和响应处理:

①请求前处理:在发送请求之前,可能需要添加一些公共的请求头(如认证令牌、内容类型等),或者进行请求参数的统一处理(如序列化、加密等)。

②响应后处理:接收到响应后,可能需要对响应数据进行统一处理,如状态码校验、错误信息的格式化、数据结构的统一等。封装后,可以在一个地方处理这些问题,避免在每个请求中重复编写相同的逻辑。

2、减少代码冗余

在项目中,可能会多次发送类似的 HTTP 请求。如果每次都直接调用 Axios,那么代码中会存在大量的重复逻辑。通过封装 Axios,可以定义一些通用的请求方法(如 GET、POST、PUT、DELETE 等),并在这些方法内部实现上述的统一处理逻辑,从而减少代码冗余。

3、增强可读性和可维护性:

封装后的 Axios 请求方法通常具有更明确的命名和参数,这使得代码更加易于理解和维护。其他开发者在查看或修改代码时,可以更容易地理解每个请求的目的和预期的行为。

4、方便集成拦截器

Axios 提供了请求拦截器和响应拦截器的功能,允许你在请求发送前或响应返回后执行一些操作。通过封装 Axios,可以更加方便地在全局范围内集成这些拦截器,实现如日志记录、请求重试、权限校验等功能。

5、支持更多的请求配置:在封装 Axios 时,可以根据项目需求定义更多的请求配置选项,如超时时间、请求取消等。这些配置可以通过封装后的方法作为参数传递,使得请求发送更加灵活和可控。

6、适应项目架构:随着项目规模的扩大和架构的演进,可能需要将 HTTP 请求的处理逻辑与业务逻辑分离,或者将请求发送到不同的后端服务。通过封装 Axios,可以更加容易地实现这些需求,而不必在每个请求中都进行复杂的配置和逻辑处理。

综上所述,封装 Axios 主要是为了提高代码的可重用性、可维护性和可扩展性,同时简化 HTTP 请求的发送和处理过程。

三、核心功能

1、请求和响应拦截器:Axios允许在请求发送前和响应返回后进行拦截,进行额外的处理,如添加请求头、修改响应数据等。

2、取消请求:在某些场景下,如用户退出页面或重新发起请求时,Axios支持取消正在进行的请求,以节省资源。

3、自动转换JSON数据:Axios默认会将请求数据和响应数据自动转换为JSON格式,简化了数据处理过程。

4、全局配置:可以通过全局配置设置默认的请求基础URL、请求超时时间等,以减少重复配置。

四、常用方法

1、axios(config):通过传入一个配置对象来发送请求,这是Axios最通用的请求方式。

2、axios.get(url[,config]):发送GET请求,可以通过params配置项传递查询参数。

3axios.post(url[,data[config]]:发送POST请求,可以通过data配置项传递请求体数据。

4、axios.all(promises):批量执行多个异步请求,并返回一个包含所有请求结果的数组。

5、axios.spread(callback):与axios.all配合使用,用于处理批量请求的结果。

五、实例化

1、axios.create([config]):可以根据提供的配置创建一个新的Axios实例,这个实例可以有自己的请求配置,而不会影响到全局的Axios实例。

六、错误处理

1、在使用Axios时,可以通过.catch()方法捕获请求过程中发生的错误,并进行相应的处理。

七、使用场景:

1、数据获取:在Web应用中,Axios常用于从服务器获取数据,如用户信息、商品列表等。

2、表单提交:Axios也可以用于提交表单数据,包括传统的表单提交和文件上传等。

3、API调用:在开发过程中,Axios可以方便地调用后端提供的API接口,实现前后端的数据交互。

八、注意事项

1、在使用Axios时,需要注意请求URL的正确性、请求参数的正确性以及错误处理的重要性。

2、当需要在多个组件或文件中复用Axios实例时,可以通过创建Axios实例来减少重复配置和提高代码的可维护性。

总的来说,Axios是一款功能强大、易于使用的HTTP客户端库,它在Web开发中发挥着重要的作用。掌握Axios的使用方法和特性,可以更加高效地进行数据交互和请求处理。

更多信息可查询:

axios中文网|axios API 中文文档 | axios

相关文章:

axios相关知识点

一、基本概念 1、基于Promise:Axios通过Promise实现异步请求,避免了传统回调函数导致的“回调地狱”问题,使得代码更加清晰和易于维护。 2、跨平台:Axios既可以在浏览器中运行,也可以在Node.js环境中使用,为前后端开…...

LeetCode 面试经典150题 67.二进制求和

415.字符串相加 思路一模一样 题目:给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 eg: 输入a“1010” b“1011” 输出“10101” 思路:从右开始遍历两个字符串,因为右边是低位先运算。如果…...

Dell PowerEdge 网络恢复笔记

我有一台Dell的PowerEdge服务器,之前安装了Ubuntu 20 桌面版。突然有一天不能开机了。 故障排查 Disk Error 首先是看一下机器的正面,有一个非常小的液晶显示器,只能显示一排字。 上面显示Disk Error,然后看挂载的硬盘仓&#…...

Java面试——集合篇

1.Java中常用的容器有哪些? 容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。 如图: 面试官追问:说说集合有哪些类及他们各自的区别和特点? S…...

算法【双向广搜】

双向广搜常见用途 1:小优化。bfs的剪枝策略,分两侧展开分支,哪侧数量少就从哪侧展开。 2:用于解决特征很明显的一类问题。特征:全量样本不允许递归完全展开,但是半量样本可以完全展开。过程:把…...

javascript检测数据类型的方法

1. typeof 运算符 typeof是一个用来检测变量的基本数据类型的运算符。它可以返回以下几种类型的字符串:“undefined”、“boolean”、“number”、“string”、“object”、“function” 和 “symbol”(ES6)。需要注意的是,对于 n…...

生信初学者教程(五):R语言基础

文章目录 数据类型整型逻辑型字符型日期型数值型复杂数数据结构向量矩阵数组列表因子数据框ts特殊值缺失值 (NA)无穷大 (Inf)非数字 (NaN)安装R包学习材料R语言是一种用于统计计算和图形展示的编程语言和软件环境,广泛应用于数据分析、统计建模和数据可视化。1991年:R语言的最…...

深度学习计算

一、层和块 块可以描述单个层、多个层组成的组件或整个模型。 通过定义块,组装块,可以实现复杂的神经网络。 一个块可以由多个class组成。 其实就是 自己定义神经网络net,自己定义层的顺序和具体的init、 forward函数。 层和块的顺序由sequen…...

Hexo博客私有部署Twikoo评论系统并迁移评论记录(自定义邮件回复模板)

部署 之前一直使用的artalk,现在想改用Twikoo,采用私有部署的方式。 私有部署 (Docker) 端口可以根据实际情况进行修改 docker run --name twikoo -e TWIKOO_THROTTLE1000 -p 8100:8100 -v ${PWD}/data:/app/data -e TWIKOO_PORT8100 -d imaegoo/twi…...

Vue.js 与 Flask/Django 后端配合:构建现代 Web 应用的最佳实践

Vue.js 与 Flask/Django 后端配合:构建现代 Web 应用的最佳实践 在现代 Web 开发中,前后端分离的架构已经成为主流。Vue.js 作为一个渐进式 JavaScript 框架,因其灵活性和易用性而广受欢迎。而 Flask 和 Django 则是 Python 生态中两个非常流…...

【笔记】自动驾驶预测与决策规划_Part3_路径与轨迹规划

文章目录 0. 前言1. 基于搜索的路径规划1.1 A* 算法1.2 Hybrid A* 算法 2. 基于采样的路径规划2.1 Frent Frame方法2.2 Cartesian →Frent 1D ( x , y ) (x, y) (x,y) —> ( s , l ) (s, l) (s,l)2.3 Cartesian →Frent 3D2.4 贝尔曼Bellman最优性原理2.5 高速轨迹采样——…...

Shiro-721—漏洞分析(CVE-2019-12422)

文章目录 Padding Oracle Attack 原理PKCS5填充怎么爆破攻击 漏洞原理源码分析漏洞复现 本文基于shiro550漏洞基础上分析,建议先看上期内容: https://blog.csdn.net/weixin_60521036/article/details/142373353 Padding Oracle Attack 原理 网上看了很多…...

【Python语言初识(一)】

一、python简史 1.1、python的历史 1989年圣诞节:Guido von Rossum开始写Python语言的编译器。1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面),可以调…...

Python 中的方法解析顺序(MRO)

在 Python 中,MRO(Method Resolution Order,方法解析顺序)是指类继承体系中,Python 如何确定在调用方法时的解析顺序。MRO 决定了在多继承环境下,Python 如何寻找方法或属性,即它会根据一定规则…...

MySQL表的内外连接

内连接 其实就是from 两个表 把笛卡尔积的表 再用where 进行条件筛选 ——之前我们写的多表查询就是内连接 基本格式: 外链接 没有向内连接那样真的把两个表连接形式一个表显示,而只是建立关系 外连接分为左链接和右链接 左链接 联合查询时候&#…...

系统架构设计师:软件架构的演化和维护

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师:软件架构的演化和维护前言软件架构演化的重要性面向对象的软件架构演…...

QT的dropEvent函数进入不了

在使用QT想实现拖拽功能的时候,发现了dropEvent没有调用运行,遂查找原因: 首先是网上都说要在dragEnterEvent里面使用event->accept(); 但我这边在出现问题之前就已经这样做了: void CanvasView::dragEnterEvent(QDragEnterEv…...

Spring Boot 入门

前言 Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级的基于 Spring 的应用程序。它简化了基于 Spring 的应用开发,通过提供一系列的“起步依赖”来快速启动和运行 Spring 应用。本文将带你深入了解 Spring Boot 的核心概念、关键特性&am…...

LDD学习2--Scull(TODO)

《Linux Device Drivers》(LDD)书籍中的 scull(Simple Character Utility for Loading Localities)是一个用于演示 Linux 字符设备驱动程序编写的示例代码。它为理解 Linux 内核模块和字符设备驱动程序的编写提供了基础实践平台&a…...

【算法-堆排序】

堆排序是一种基于堆这种数据结构的比较排序算法,它是一种原地、不稳定的排序算法,时间复杂度为 O(n log n)。堆排序的基本思想是将数组构建成一个二叉堆,并通过反复调整堆顶和未排序部分之间的关系来实现排序。 堆的定义 堆是一种特殊的完全…...

如何实现固定翼无人机编队飞行?PX4开源方案深度解析与实践指南

如何实现固定翼无人机编队飞行?PX4开源方案深度解析与实践指南 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot 多无人机编队飞行技术正从实验室走向实际应用,在测绘、农业、…...

SecGPT-14B提示工程:提升OpenClaw安全报告可读性的秘诀

SecGPT-14B提示工程:提升OpenClaw安全报告可读性的秘诀 1. 当安全报告遇上OpenClaw:我的真实痛点 上周五凌晨2点,我被OpenClaw的告警邮件惊醒——它发现我的个人服务器存在一个高危漏洞。但当我打开那份自动生成的安全报告时,眼…...

ESP32-S3摄像头实战:按键触发拍照与SD卡自动存储方案

1. ESP32-S3摄像头项目核心价值与应用场景 当你手头有一块ESP32-S3开发板和摄像头模块时,最直接的冲动可能就是做个能拍照的小设备。但要把这个想法落地,需要解决三个关键问题:如何稳定触发拍摄?拍完的照片存哪里?怎么…...

保姆级教程:用Python+Socket实现西门子CNC产量数据自动采集(附避坑指南)

PythonSocket实现西门子CNC产量数据自动化采集实战指南 在工业4.0时代,生产数据的实时采集与分析已成为智能制造的核心环节。对于使用西门子数控系统(如828D、840DSL等)的制造企业而言,如何绕过复杂的授权流程,通过编程…...

告别手动配置!用Simulink 2021b生成ARXML,一键导入ISOLAR-A V9.2.1自动生成RTE

从Simulink到ISOLAR-A:ARXML自动化配置RTE的工程实践 在AUTOSAR开发流程中,模型设计与工具链集成往往存在效率瓶颈。传统"自下而上"开发模式下,工程师需要反复在Simulink和ISOLAR-A/B之间切换,手动维护接口定义、端口连…...

别再只用Arduino了!用ESP32+TSW-30浑浊度传感器做个智能鱼缸水质监测器(附完整代码)

ESP32TSW-30浑浊度传感器打造智能鱼缸水质监测系统 养鱼爱好者都知道,水质是鱼类健康生长的关键因素。传统的人工检测方式不仅费时费力,还难以做到实时监控。今天我们就来动手打造一个基于ESP32和TSW-30浑浊度传感器的智能鱼缸水质监测系统,让…...

URP Scriptable Renderer Feature实战:从原理到自定义后处理

1. URP Scriptable Renderer Feature基础认知 第一次接触URP的Scriptable Renderer Feature时,我完全被各种专业术语搞晕了。后来在实际项目中反复折腾才发现,这东西本质上就是个"特效插件系统"。想象你正在玩一款射击游戏,当角色受…...

uniApp实现跨平台跳转支付宝小程序的完整方案

1. 跨平台跳转支付宝小程序的背景与挑战 在移动应用开发中,实现应用间的无缝跳转是提升用户体验的关键环节。对于使用uniApp框架的开发者来说,如何在不同操作系统上正确唤起支付宝小程序,是一个既常见又棘手的问题。iOS和Android平台在协议处…...

关闭蜂鸣器与外设的初始化代码

针对蓝桥杯单片机开发中关闭蜂鸣器与外设的初始化操作,以及创建标准.h头文件的必备代码,以下是详细的技术方案与实现代码。 1. 蓝桥杯单片机系统初始化与外设关闭 蓝桥杯官方使用的CT107D开发板(以IAP15F2K61S2单片机为核心)&am…...

零代码!用Qwen-Image-2512-ComfyUI轻松制作中文电商配图与营销素材

零代码!用Qwen-Image-2512-ComfyUI轻松制作中文电商配图与营销素材 1. 为什么选择Qwen-Image-2512-ComfyUI 电商运营和内容创作者经常面临一个共同难题:如何快速制作高质量的中文营销素材。传统设计工具需要专业技能,而普通AI绘画工具又难以…...