当前位置: 首页 > 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;当…...

Kubernetes部署Valheim游戏服务器:云原生架构实践指南

1. 项目概述&#xff1a;当维京英灵殿遇上Kubernetes如果你和我一样&#xff0c;既沉迷于《英灵神殿》&#xff08;Valheim&#xff09;里那种与三五好友一起伐木、采矿、建造长屋&#xff0c;然后被巨魔追得满地图跑的原始乐趣&#xff0c;又恰好是一名整天和容器、编排系统打…...

模拟IC设计避坑指南:用Cadence Virtuoso仿真,揭秘电流镜精度下降的3个元凶

模拟IC设计避坑指南&#xff1a;用Cadence Virtuoso仿真&#xff0c;揭秘电流镜精度下降的3个元凶 在模拟CMOS集成电路设计中&#xff0c;电流镜作为基础模块广泛应用于偏置电路、有源负载等场景。然而许多工程师在Cadence Virtuoso IC617中完成电流镜设计后&#xff0c;常会遇…...

QMCFLAC2MP3终极指南:免费快速解锁QQ音乐格式限制

QMCFLAC2MP3终极指南&#xff1a;免费快速解锁QQ音乐格式限制 【免费下载链接】qmcflac2mp3 直接将qmcflac文件转换成mp3文件&#xff0c;突破QQ音乐的格式限制 项目地址: https://gitcode.com/gh_mirrors/qm/qmcflac2mp3 你是否曾经在QQ音乐下载了心爱的歌曲&#xff0…...

Aurora框架解析:一体化高性能云原生开发平台的设计与实践

1. 项目概述与核心价值如果你在开源社区里混迹过一段时间&#xff0c;尤其是对现代化、高性能的Web开发框架感兴趣&#xff0c;那么“Aurora”这个名字你大概率不会陌生。它不是一个简单的库或者工具&#xff0c;而是一个由社区驱动的、旨在构建下一代企业级应用开发平台的雄心…...

Mantic.sh:Bash脚本实现的终端命令自动化与效率提升工具

1. 项目概述&#xff1a;一个为开发者打造的终端效率工具如果你和我一样&#xff0c;每天有超过一半的工作时间是在终端&#xff08;Terminal&#xff09;里度过的&#xff0c;那你肯定对效率工具有着近乎偏执的追求。从cd到ls&#xff0c;从grep到awk&#xff0c;我们依赖这些…...

JetBrains IDE试用期重置终极指南:3种简单方法实现30天无限续杯

JetBrains IDE试用期重置终极指南&#xff1a;3种简单方法实现30天无限续杯 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 你是否在使用IntelliJ IDEA、PyCharm、WebStorm等JetBrains IDE时遇到过试用期突然结束…...

从图片到摄像头:用YOLOv8n.pt模型在Win10上实现实时目标检测(代码+命令详解)

从图片到摄像头&#xff1a;用YOLOv8n.pt模型在Win10上实现实时目标检测&#xff08;代码命令详解&#xff09; 当计算机视觉遇上边缘计算&#xff0c;目标检测技术正在重塑人机交互的边界。YOLOv8作为当前最先进的实时检测框架之一&#xff0c;其轻量级版本yolov8n.pt在普通消…...

WipperSnapper+Adafruit IO:无代码物联网开发实战,从传感器到云端自动化

1. 项目概述与核心价值如果你和我一样&#xff0c;在物联网&#xff08;IoT&#xff09;项目初期&#xff0c;常常被复杂的嵌入式编程、网络协议和云平台对接搞得焦头烂额&#xff0c;那么今天分享的这个实战项目&#xff0c;或许能让你眼前一亮。我们这次不谈复杂的代码&#…...

faah:轻量级自动化任务编排器,简化运维与数据处理工作流

1. 项目概述&#xff1a;一个被低估的自动化利器最近在整理自己的自动化工具链时&#xff0c;又翻出了kiron0/faah这个项目。说实话&#xff0c;第一次看到这个仓库名&#xff0c;我也有点懵——“faah”&#xff1f;这名字听起来不像是一个典型的工具。但点进去之后&#xff0…...

量子误差缓解:Bhattacharyya距离与保形预测的应用

1. 量子噪声与误差缓解的核心挑战在当前的NISQ&#xff08;Noisy Intermediate-Scale Quantum&#xff09;时代&#xff0c;量子计算机面临的最大障碍就是噪声和误差问题。这些噪声主要来源于量子比特与环境之间的相互作用、门操作的不完美性以及测量误差等。以一个典型的超导量…...