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

使用Axios函数库进行网络请求的使用指南

目录

  • 前言
  • 1. 什么是Axios
  • 2. Axios的引入方式
    • 2.1 通过CDN直接引入
    • 2.2 在模块化项目中引入
  • 3. 使用Axios发送请求
    • 3.1 GET请求
    • 3.2 POST请求
  • 4. Axios请求方式别名
  • 5. 使用Axios创建实例
    • 5.1 创建Axios实例
    • 5.2 使用实例发送请求
  • 6. 使用async/await简化异步请求
    • 6.1 获取所有文章数据
    • 6.2 捕获异常
  • 7. 将Axios提取成模块
  • 8. 小结

前言

在现代的前端开发中,API调用是实现前后端数据交互的重要环节。而在众多的HTTP库中,Axios以其简洁的语法、丰富的功能和易于扩展的特性,成为了开发者的首选。本篇文章将深入介绍Axios的使用方法,包括如何引入、基本使用方法、请求方式别名、异步操作等,并通过示例代码帮助读者快速掌握Axios。

1. 什么是Axios

Axios是一个基于Promise的HTTP库,可以用于浏览器和Node.js环境下的网络请求。它支持多种请求方式(GET、POST、PUT、DELETE等),支持Promise语法,并且兼容ES7的async/await语法。Axios能够轻松发送异步请求,处理JSON格式数据,还支持自动转换请求和响应数据格式、拦截请求与响应、取消请求等高级功能。
在这里插入图片描述

2. Axios的引入方式

在项目中使用Axios有多种引入方式,主要包括通过CDN直接引入和在模块化项目中通过npm安装。

2.1 通过CDN直接引入

在HTML文件中,可以直接使用script标签引入Axios的CDN链接:

<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

通过这种方式引入后,Axios会挂载到全局的axios变量上,可以直接使用axios对象进行请求操作。

2.2 在模块化项目中引入

对于前端开发中常见的模块化项目(如基于Webpack、Vite构建的项目),推荐通过npm安装Axios:

npm install axios

安装完成后,在需要的文件中通过import导入:

import axios from 'axios';

这样可以确保项目依赖的管理,同时避免全局污染。

3. 使用Axios发送请求

Axios支持多种HTTP请求方法,开发者可以根据具体需求选择不同的方法来发送请求。最基本的请求方法为GET和POST,这两者涵盖了大多数的使用场景。

3.1 GET请求

GET请求用于从服务器获取数据。例如,我们希望获取所有文章数据:

axios.get('http://localhost:8080/article/getAll').then(response => {console.log(response.data);}).catch(error => {console.error(error);});

在上述代码中,通过axios.get()发送请求,若请求成功,则可以通过response.data获取服务器返回的数据;若失败,则进入catch方法进行错误处理。

3.2 POST请求

POST请求用于向服务器发送数据,一般用于提交表单或其他信息。例如:

axios.post('http://localhost:8080/article/create', {title: 'Axios使用指南',content: '本文详细介绍了Axios的使用方法...'
}).then(response => {console.log(response.data);}).catch(error => {console.error(error);});

axios.post()的第一个参数是请求URL,第二个参数是请求体,通常以JSON格式传递。

4. Axios请求方式别名

为了简化代码,Axios提供了所有常用请求方式的别名,开发者可以直接使用这些别名来发送相应的请求。

请求方式别名说明
GETaxios.get(url, config)用于获取数据
POSTaxios.post(url, data, config)提交数据
PUTaxios.put(url, data, config)更新资源
DELETEaxios.delete(url, config)删除资源

这些别名方法的参数包括URL、请求数据、请求配置(可选),能够满足不同的需求。通过这些别名,Axios进一步提升了开发效率。

5. 使用Axios创建实例

在项目中频繁调用API时,为了避免重复编写baseURL等信息,我们可以创建Axios实例。下面通过代码示例展示如何创建一个带有基础URL的Axios实例。
在这里插入图片描述

5.1 创建Axios实例

首先,定义一个公共的baseURL前缀,然后通过axios.create()创建一个实例:

const baseURL = 'http://localhost:8080';
const instance = axios.create({baseURL: baseURL
});

通过instance可以直接调用指定API而不需要重复写baseURL

5.2 使用实例发送请求

实例创建完成后,就可以通过instance来发送请求:

instance.get('/article/getAll').then(response => {console.log(response.data);}).catch(error => {console.error(error);});

在这里,/article/getAll是相对路径,Axios会自动拼接baseURL,构成完整的URL并发送请求。

6. 使用async/await简化异步请求

在Axios中,Promise的语法已经非常简洁,但在一些复杂场景下,async/await的同步风格可以使代码逻辑更为直观。以下是使用async/await发送请求的示例。

6.1 获取所有文章数据

我们可以将获取文章列表的功能封装成一个异步函数:

export async function articleGetAllService() {try {const response = await instance.get('/article/getAll');return response.data;} catch (error) {console.error(error);}
}

在这个例子中,通过await等待instance.get()的结果,并在返回前检查是否发生错误。这种方式能够同步等待服务器响应,更加符合人类的阅读逻辑。

6.2 捕获异常

async/await同样支持try...catch进行错误捕获,便于进行统一的错误处理。例如,在请求失败时,可以在控制台输出错误信息或提示用户重新尝试。

7. 将Axios提取成模块

在大型项目中,建议将Axios相关的代码集中到一个模块中,这样有助于管理API调用。以下是一个简单的Axios服务模块示例:

// apiService.js
import axios from 'axios';const baseURL = 'http://localhost:8080';
const instance = axios.create({baseURL: baseURL
});// 获取所有文章数据的函数
export async function articleGetAllService() {try {const response = await instance.get('/article/getAll');return response.data;} catch (error) {console.error(error);}
}

这个模块包含Axios实例的创建和API调用函数的封装,使用时只需在其他文件中导入模块即可。这样可以提高代码的可维护性和复用性。

8. 小结

在现代前端开发中,Axios提供了强大而灵活的HTTP请求能力。通过本篇文章,我们详细探讨了Axios的引入方式、请求方法的别名、实例的创建、async/await的使用等内容。将Axios作为模块提取,更加符合实际项目开发需求,可以有效提高代码的复用性和可维护性。

相关文章:

使用Axios函数库进行网络请求的使用指南

目录 前言1. 什么是Axios2. Axios的引入方式2.1 通过CDN直接引入2.2 在模块化项目中引入 3. 使用Axios发送请求3.1 GET请求3.2 POST请求 4. Axios请求方式别名5. 使用Axios创建实例5.1 创建Axios实例5.2 使用实例发送请求 6. 使用async/await简化异步请求6.1 获取所有文章数据6…...

Vue2+ElementUI:用计算属性实现搜索框功能

前言&#xff1a; 本文代码使用vue2element UI。 输入框搜索的功能&#xff0c;可以在前端通过计算属性过滤实现&#xff0c;也可以调用后端写好的接口。本文介绍的是通过计算属性对表格数据实时过滤&#xff0c;后附完整代码&#xff0c;代码中提供的是死数据&#xff0c;可…...

抖音热门素材去哪找?优质抖音视频素材网站推荐!

是不是和我一样&#xff0c;刷抖音刷到停不下来&#xff1f;越来越多的朋友希望在抖音上创作出爆款视频&#xff0c;但苦于没有好素材。今天就来推荐几个超级实用的抖音视频素材网站&#xff0c;让你的视频内容立刻变得高大上&#xff01;这篇满是干货&#xff0c;直接上重点&a…...

spring-cache concurrentHashMap 自定义过期时间

1.自定义实现缓存构建工厂 import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap;import lombok.Getter; import lombok.Setter; import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.…...

解析传统及深度学习目标检测方法的原理与具体应用之道

深度学习目标检测算法 常用的深度学习的目标检测算法及其原理和具体应用方法&#xff1a; R-CNN&#xff08;Region-based Convolutional Neural Networks&#xff09;系列1&#xff1a; 原理&#xff1a; 候选区域生成&#xff1a;R-CNN 首先使用传统的方法&#xff08;如 Se…...

shell数组

文章目录 &#x1f34a;自我介绍&#x1f34a;shell数组概述&#x1f34a;Shell数组使用方法数组的定义直接定义单元素定义 元素的获取获取单个元素获取全部元素 获取数组长度获取整个数组长度获取单个元素的长度 操作数组增加删除 关联数组 &#x1f34a; 你的点赞评论就是对博…...

高斯混合模型回归(Gaussian Mixture Model Regression,GMM回归)

高斯混合模型&#xff08;GMM&#xff09;是一种概率模型&#xff0c;它假设数据是由多个高斯分布的混合组成的。在高斯混合回归中&#xff0c;聚类与回归被结合成一个联合模型&#xff1a; 聚类部分 — 使用高斯混合模型进行聚类&#xff0c;识别数据的不同簇。回归部分 — 对…...

【3D Slicer】的小白入门使用指南八

3D Slicer DMRI(Diffusion MRI)-扩散磁共振认识和使用 0、简介 大脑解剖 ● 白质约占大脑的 45% ● 有髓神经纤维(大约10微米轴突直径) 白质探索 朱尔斯约瑟夫德杰林(Jules Joseph Dejerine,《神经中心解剖学》(巴黎,1890-1901):基于髓磷脂染色标本的神经解剖图谱)…...

【流量分析】常见webshell流量分析

免责声明&#xff1a;本文仅作分享&#xff01; 对于常见的webshell工具&#xff0c;就要知攻善防&#xff1b;后门脚本的执行导致webshell的连接&#xff0c;对于默认的脚本要了解&#xff0c;才能更清晰&#xff0c;更方便应对。 &#xff08;这里仅针对部分后门代码进行流量…...

基于树莓派的边缘端 AI 目标检测、目标跟踪、姿态估计 视频分析推理 加速方案:Hailo with ultralytics YOLOv8 YOLOv11

文件大纲 加速原理硬件安装软件安装基本设置系统升级docker 方案Demo 测试目标检测姿态估计视频分析参考文献前序树莓派文章hailo加速原理 Hailo 发布的 Raspberry Pi AI kit 加速原理,有几篇文章介绍的不错 https://ubuntu.com/blog/hackers-guide-to-the-raspberry-pi-ai-ki…...

Java在算法竞赛中的常用方法

在算法竞赛中&#xff0c;Java以其强大的标准库和高效的性能成为了众多参赛者的首选语言。本文将详细介绍Java在算法竞赛中的常用集合、字符串处理、进制转换、大数处理以及StringBuilder的使用技巧&#xff0c;帮助你在竞赛中更加得心应手。 常用集合 Java的集合框架提供了多…...

Vulnhub靶场案例渗透[10]- Momentum2

文章目录 一、靶场搭建1. 靶场描述2. 下载靶机环境3. 靶场搭建 二、渗透靶场1. 确定靶机IP2. 探测靶场开放端口及对应服务3. 扫描网络目录结构4. 代码审计5. 反弹shell6. 提权 一、靶场搭建 1. 靶场描述 - Difficulty : medium - Keywords : curl, bash, code reviewThis wor…...

Spark RDD中常用聚合算子源码层面的对比分析

在 Spark RDD 中&#xff0c;groupByKey、reduceByKey、foldByKey 和 aggregateByKey 是常用的聚合算子&#xff0c;适用于按键进行数据分组和聚合。它们的实现方式各不相同&#xff0c;涉及底层调用的函数也有区别。以下是对这些算子在源码层面的分析&#xff0c;以及每个算子…...

计算机网络 (6)物理层的基本概念

前言 计算机网络物理层是OSI模型&#xff08;开放式系统互联模型&#xff09;中的第一层&#xff0c;也是七层中的最底层&#xff0c;它涉及到计算机网络中数据的物理传输。 一、物理层的主要任务和功能 物理层的主要任务是处理物理传输介质上的原始比特流&#xff0c;确保数据…...

快速上手:Docker 安装详细教程(适用于 Windows、macOS、Linux)

### 快速上手&#xff1a;Docker 安装详细教程&#xff08;适用于 Windows、macOS、Linux&#xff09; --- Docker 是一款开源容器化平台&#xff0c;广泛应用于开发、测试和部署。本文将为您提供分步骤的 Docker 安装教程&#xff0c;涵盖 Windows、macOS 和 Linux 系统。 …...

kafka消费者出现频繁Rebalance

kafka消费者在正常使用过程中&#xff0c;突然出现了不消费消息的情况&#xff0c;项目里是使用了多个消费者消费不同数据&#xff0c;按理不会相互影响&#xff0c;看日志&#xff0c;发现消费者出现了频繁的Rebalance。 Rebalance的触发条件 组成员发生变更(新consumer加入组…...

rk3399开发环境使用Android 10初体验蓝牙功能

版本 日期 作者 变更表述 1.0 2024/11/10 于忠军 文档创建 零. 前言 由于Bluedroid的介绍文档有限&#xff0c;以及对Android的一些基本的知识需要了(Android 四大组件/AIDL/Framework/Binder机制/JNI/HIDL等)&#xff0c;加上需要掌握的语言包括Java/C/C等&#xff0…...

ASP.NET 部署到IIS,访问其它服务器的共享文件 密码设定

asp.net 修改上面的 IIS需要在 配置文件 添加如下内容 》》》web.config <system.web><!--<identity impersonate"true"/>--><identity impersonate"true" userName"您的账号" password"您的密码" /><co…...

将自定义函数添加到MATLAB搜索路径的方法

在MATLAB中&#xff0c;将自定义函数添加到搜索路径可以确保你能够方便地调用这些函数&#xff0c;而不必每次都指定完整路径。本文介绍几种将自定义函数添加到MATLAB搜索路径的方法 文章目录 使用 MATLAB 的路径管理工具使用 addpath 命令在启动时自动添加路径使用 genpath 命…...

云原生之运维监控实践-使用Telegraf、Prometheus与Grafana实现对InfluxDB服务的监测

背景 如果你要为应用程序构建规范或用户故事&#xff0c;那么务必先把应用程序每个组件的监控指标考虑进来&#xff0c;千万不要等到项目结束或部署之前再做这件事情。——《Prometheus监控实战》 去年写了一篇在Docker环境下部署若依微服务ruoyi-cloud项目的文章&#xff0c;当…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...