Axios 是一个基于 Promise 的 HTTP 客户端库,用于浏览器和 Node.js 环境。它支持发送异步 HTTP 请求,并提供了简洁的 API 来处理请求和响应。

1、安装axios

因为axios是一个第三方库,所以在使用之前我们需要先安装第三方模块。

安装 Axios 需通过 ohpm 包管理器完成。在 DevEco Studio 终端执行命令后,库文件会自动下载并集成到项目中。卸载时同样通过 ohpm 清理依赖,确保项目无冗余文件。

安装命令作用于鸿蒙(OpenHarmony)生态,需注意环境兼容性。安装完成后,无需额外配置即可直接引入模块。

安装的命令为:

# 安装
ohpm i @ohos/axios# 卸载
ohpm uninstall @ohos/axios

首先,我们打开DevEco Studio,点击下方的终端,在终端中输入安装命令,等待安装完成后即可。

2、axios的基本用法

Axios 的完整请求语法支持泛型参数,分别定义响应数据类型、完整响应结构及请求参数类型。配置对象包含以下关键字段:

  • method:HTTP 方法(如 GET/POST),不区分大小写,默认 GET
  • url:目标服务器地址,支持绝对路径或相对路径
  • headers:自定义请求头,例如设置 Content-Type 为 JSON 格式
  • params:URL 查询参数,自动拼接到请求地址后
  • data:请求体数据,用于 POST/PUT 等需要传输数据的场景

语法:

// 完整写法
axios<string, AxiosResponse<string>, null>({method: "请求方式",  // 支持post/get/put/delete方法,不区分大小写,默认为get方法url: '是用于请求的服务器 URL',  // 请求的地址headers: {'Content-Type': 'application/json'}, // 是即将被发送的自定义请求头params: {参数名: 参数值   // 与请求一起发送的 URL 参数},data: {参数名: 参数值  // 作为请求主体被发送的数据},context: context // 基于应用程序的上下文,只适用于上传/下载请求
}).then((res: AxiosResponse) => {// res 接收成功的结果 
}).catch((error: AxiosError) => {// error 接收失败的结果
})

axios后<>内分别是返回,响应的核心数据类型,响应的数据类型,请求参数类型。

3、axios的请求别名

Axios 提供了简洁的请求别名方法,涵盖了常见的 HTTP 请求方式。这些别名方法可直接调用,无需显式指定 method 参数。

3.1get请求

作用:客户端通过请求从服务器获取HTML、CSS、JavaScript、图片或视频等静态资源。例如,浏览器发送HTTP请求加载网页内容。

语法:

// 导入
import axios, { AxiosResponse } from '@ohos/axios'
// 发送get请求
axios.get<ResponseType, AxiosResponse<ResponseType>, RequestBodyType>('https://www.xxx.com/info', { params: { key: "value" } // query 参数})
.then((response: AxiosResponse) => {console.info("result:" + JSON.stringify(response.data));
})
.catch((error: AxiosError) => {console.error("result:" + error.message);
});
3.2post请求

作用:表单提交、文件上传或API调用通过请求将数据发送到服务器。例如,用户登录时提交账号密码至服务端验证。

语法:

import axios from 'axios';axios.post<ResponseType, AxiosResponse<ResponseType>, RequestBodyType>('https://www.xxx.com/info',{ key: "value" }, // Body 参数{headers: { 'Content-Type': 'application/json' }, // 请求头params: {}, // 可选的 URL 查询参数}
)
.then((response: AxiosResponse<string>) => {console.info("POST result:" + JSON.stringify(response.data));
})
.catch((error: AxiosError) => {console.error("POST error:" + error.message);
});
3.3put请求

作用:请求可触发服务器端的特定处理逻辑,如数据库更新、支付流程或数据分析。RESTful API中的POSTDELETE请求常用于此类场景。

语法:

import axios from 'axios';axios.put<ResponseType, AxiosResponse<ResponseType>, RequestBodyType>('https://www.xxx.com/info/path参数',{ key: "value" }, // PUT 请求体参数(Body参数){headers: { 'Content-Type': 'application/json' }, // 请求头 -> json以为的其他数据格式params: {key: "value"}, // 可选的 URL 查询参数(query参数)}
)
.then((response: AxiosResponse<string>) => {console.info("PUT result:" + JSON.stringify(response.data));
})
.catch((error: AxiosError) => {console.error("PUT error:" + error.message);
});
3.4delete请求

作用:删除数据。

语法:

import axios from 'axios';axios.delete<ResponseType, AxiosResponse<ResponseType>, RequestBodyType>('https://www.xxx.com/info/path参数',{headers: { 'Content-Type': 'application/json' }, // 请求头params: { key: "value" }, // DELETE 请求通常用 query 参数// 如果需要 body,可以这样传:// data: { key: "value" }, // 某些 API 可能需要 body 参数}
)
.then((response: AxiosResponse<string>) => {console.info("DELETE result:" + JSON.stringify(response.data));
})
.catch((error: AxiosError) => {console.error("DELETE error:" + error.message);
});

4、axios基地址

axios基地址是axios实例的基础URL路径,它会被自动添加到所有相对路径请求的前面。通过设置基地址可以简化代码,避免重复书写相同的服务器地址前缀。

语法:

const req =  axios.create({// 基地址,后续请求的时候这部分可以省略baseURL:'https://api-vue-base.xxxxxx.net/'
})
// get 请求 直接写 url 即可
const res = await req<string, JokeListResponse, null>({url: '/xxx/xxx',params: {num: 10}
})
AlertDialog.show({ message: JSON.stringify(res.data.data) })

综上所述,Axios 作为一个基于 Promise 的强大 HTTP 客户端库,凭借其简洁的 API 设计和跨平台兼容性(支持浏览器与 Node.js 环境),为开发者提供了高效处理异步请求的解决方案。从安装到实际应用,它通过 ohpm 包管理器实现无缝集成,配置简单直观;请求别名如 GET、POST、PUT 和 DELETE 简化了常见操作;基地址设置则优化了代码复用性,避免冗余。这些特性不仅提升了开发效率,还确保了请求处理的可靠性与可维护性。建议开发者在项目中积极实践这些方法,结合错误处理机制,以构建更健壮的应用程序。如需进一步探索,可参考官方文档深化学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/96329.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/96329.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/96329.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子烟的4种屏幕驱动集成语音方案介绍

目前电子烟在全球市场的表现非常不错&#xff0c;很多国产电子烟厂家都有非常不错的产品&#xff0c;而屏幕驱动方案是电子烟智能化的重要组成部分&#xff0c;今天就给大家带来电子烟的4种主流屏幕驱动方案(含2025年最新版方案)。​  方案一、LED显示方案语音播报集成方案 W…

无法加载 DLL“xxxxxxx.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。

(无法加载 DLL“xxxxxxx.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。) 这个错误&#xff1a; 无法加载 DLL“ZH_P2P_Libx64.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E) 意味着你的程序在运行时试图加载一个名为 xxxxxxx.dll 的动态链接库&#…

Flask/Django 生产部署:Gunicorn vs Nginx,Windows 与 Linux 实战指引

Flask/Django 生产部署&#xff1a;Gunicorn vs Nginx&#xff0c;Windows 与 Linux 实战指引 TL;DR Gunicorn&#xff1a;Python WSGI 应用服务器&#xff0c;运行 Flask/Django&#xff08;Linux 用&#xff09;。Nginx&#xff1a;反向代理/网关&#xff08;TLS、静态、限流…

Nginx 优化与防盗链全解析:从性能调优到资源保护

Nginx 优化与防盗链全解析&#xff1a;从性能调优到资源保护 文章目录Nginx 优化与防盗链全解析&#xff1a;从性能调优到资源保护一、基础安全优化&#xff1a;隐藏版本号1.1 查看当前版本号1.2 两种隐藏/修改方案方案一&#xff1a;修改配置文件&#xff08;快速隐藏&#xf…

HOT100--Day20--39. 组合总和,22. 括号生成,79. 单词搜索

HOT100–Day20–39. 组合总和&#xff0c;22. 括号生成&#xff0c;79. 单词搜索 每日刷题系列。今天的题目是《力扣HOT100》题单。 题目类型&#xff1a;回溯。 关键&#xff1a;掌握排列&#xff0c;组合。记得回溯。可以重复选的话&#xff0c;下一层index从哪里开始&#x…

高并发场景下的“命令执行”注入绕道记

环境&#xff1a;CentOS 8 OpenResty 1.21 PHP-FPM 8.0 背景&#xff1a;营销团队上线了一个“图片裁剪”接口&#xff0c;参数直接拼进 shell_exec&#xff0c;结果被打成“矿机”。1. 发现&#xff1a;流量突增 30 倍&#xff0c;却不见数据库慢查询 iftop -i eth0出站 1.8…

【modbus学习】

Modbus通信&#xff08;源于施耐德&#xff09;串行链路&#xff1a;RTU&#xff08;传输大量数据&#xff0c;适合工业&#xff09;、ASCII&#xff08;少量数据&#xff0c;适合计算机&#xff09;TCP/IP&#xff1a;TCP&#xff08;传输严谨&#xff0c;效率低&#xff09;、…

Redis单线程模型为什么快?

Redis的单线程模型指的是redis只使用一个线程来出来所有的命令式指令&#xff0c;但是不是意味着redis内部就只使用一个线程来处理所有的任务。都知道redis是一个客户端-服务器的程序&#xff0c;那么redis就只有一个服务器&#xff0c;但是有多个客户端&#xff0c;就像mysql一…

前端安全攻防:XSS, CSRF 等常见威胁的防范与检测指南

在如今高度互联的 Web 应用世界里&#xff0c;前端安全不再是可有可无的选项&#xff0c;而是构建可信赖、健壮应用的基石。随着 Web 技术的发展&#xff0c;攻击者们也变得越来越狡猾&#xff0c;前端遭受的攻击手段层出不穷。其中&#xff0c;跨站脚本攻击 (XSS) 和跨站请求伪…

Scikit-learn Python机器学习 - 特征降维 压缩数据 - 特征选择 - 移除低方差特征(VarianceThreshold)

锋哥原创的Scikit-learn Python机器学习视频教程&#xff1a; 2026版 Scikit-learn Python机器学习 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 课程介绍 本课程主要讲解基于Scikit-learn的Python机器学习知识&#xff0c;包括机器学习概述&#xff0c;特征工程(数据…

C#(链表创建与原地反转)

链表创建&#xff08;C#&#xff09; 在C#中&#xff0c;链表可以通过自定义节点类实现。每个节点包含数据域和指向下一个节点的引用。 public class ListNode {public int val;public ListNode next;public ListNode(int val0, ListNode nextnull) {this.val val;this.next…

Android --- AOSP源码导入Android Studio

AOSP代码量庞大&#xff0c;为了开发的方便&#xff0c;我们需要导入到android studio中&#xff0c;其中关键的一 项就是配置跳转。尤其是对于Framework开发来说生成 ipr,iml 工程文件make idegen ./development/tools/idegen/idegen.sh会生成如下文件首先需要修改ipr和iml文件…

游戏中的设计模式——第一篇 设计模式简介

前言 对于设计模式&#xff0c;相信很多开发者并不陌生&#xff0c;我在学习过程中希望把自己的一些总结和心得体会与你分享。 本专栏主要将重点放在设计模式在游戏中的应用&#xff0c;会结合大家熟悉的游戏场景和功能阐述设计模式在该处应用的好处。因为设计模式很多&#xf…

SpringBoot + RustFS 实现文件切片极速上传技术

本文将手把手教你如何通过 SpringBoot 和 RustFS 构建高性能文件切片上传系统&#xff0c;解决大文件传输的痛点&#xff0c;实现秒传、断点续传和分片上传等高级功能。 目录 一、为什么选择 RustFS SpringBoot&#xff1f; 二、环境准备与部署 2.1 安装 RustFS 2.2 Sprin…

在Word和WPS文字中便捷切换英文段落大小写

在Word和WPS文字中编辑英文段落时&#xff0c;有时候英文字母的大小写不规范&#xff0c;或者需要把某一段全部改为大写字母怎么办&#xff1f;使用ShiftF3组合键即可快速在三种模式中切换&#xff1a;全部大写、全部小写、首字母大写——其中首字母大写的Word是每一句话的第一…

成都金牛区哪里租好办公室?国际数字影像产业园享税收优惠

在成都金牛区租赁优质办公室&#xff0c;国际数字影像产业园凭借其享有的税收优惠政策&#xff0c;成为了许多企业的首选之地。税收优惠对于租赁办公室的企业来说&#xff0c;是一笔不小的成本节省。国际数字影像产业园针对入驻企业提供的税收优惠政策&#xff0c;能在企业运营…

CSS `:is()` `:where()` 实战指南:简化选择器,提升可维护性

&#x1f3af; CSS :is() & :where() 实战指南&#xff1a;简化选择器&#xff0c;提升可维护性你是否在项目中写过一大串重复的选择器&#xff1f;比如&#xff1a; h1, h2, h3, h4, h5, h6 { margin-bottom: 1rem; }这样的代码既冗长又难维护。 现在 CSS 提供了 :is() 和…

Linux I/O 访问架构深入分析

Linux I/O 访问架构深入分析 目录 概述I/O 架构层次核心数据结构I/O 处理流程VFS 虚拟文件系统块设备I/O字符设备I/O内存映射I/O异步I/O机制I/O调度器调试工具与方法性能优化策略 概述 Linux I/O 系统是一个多层次、高度抽象的架构&#xff0c;旨在为应用程序提供统一的文件访问…

Linux:6_基础IO

基础IO 一.理解"文件" 文件分类 1.内存级(被打开)文件 2.磁盘级文件 1. 狭义理解 文件在磁盘里磁盘是永久性存储介质&#xff0c;因此文件在磁盘上的存储是永久性的磁盘是外设 (即是输出设备也是输入设备)磁盘上的文件本质是对文件的所有操作&#xff0c;都是对外…

Coze源码分析-资源库-删除插件-前端源码-核心逻辑

删除插件逻辑 1. 删除操作入口组件 删除插件操作主要通过 usePluginConfig hook 中的 renderActions 方法实现&#xff0c;该方法返回 TableAction 组件来处理表格行的操作。 文件位置&#xff1a;frontend/packages/studio/workspace/entry-base/src/pages/library/hooks/u…