前端知识点---http.createHttp()的理解(arkts)

通俗易懂的例子:点外卖 🍔🥤
想象一下,你在家里点外卖,HTTP 请求就像是你和餐厅之间的沟通方式。

1️⃣ 没有 http.createHttp():每次点餐都重新拨电话 📞
如果你每次点餐都重新拨打餐厅的电话,情况会变成这样:

你今天想吃 炸鸡 🍗,拨打电话 → “喂,请给我炸鸡” → 挂断电话。
明天想喝 奶茶 🥤,再拨打电话 → “喂,请给我一杯奶茶” → 挂断电话。
后天想吃 披萨 🍕,再拨打电话 → “喂,请给我披萨” → 挂断电话。
问题:

每次点单都要重新拨号,非常麻烦 📞📞📞。
餐厅可能每次接到新电话都要重新确认你的信息(比如地址),很低效。
你无法方便地管理所有点餐记录(比如想查之前点了什么)。
这个就像你每次都直接使用 fetch() 发送 HTTP 请求,每次都要重新建立连接,不方便。

2️⃣ 使用 http.createHttp():建立外卖客服专线 📞📠
现在,餐厅推出了一个VIP 点餐专线:

你第一次打电话,餐厅会给你一个专属客服编号(httpRequest)。
之后你只需要联系这个客服,不用每次重新拨号!
这个客服可以帮你存地址、提供折扣、跟踪订单,一切都更方便。
代码示例:


// 1️⃣ 创建 HTTP 客户端,相当于和餐厅的客服建立联系
let httpRequest = http.createHttp(); // 2️⃣ 第一次下单(点炸鸡 🍗)
httpRequest.request('https://restaurant.com/order', {method: 'POST',body: JSON.stringify({ food: '炸鸡', quantity: 1 })
}).then(response => {console.log('订单已提交:', response.result);
}).catch(error => {console.log('点餐失败:', error);
});// 3️⃣ 第二次下单(点奶茶 🥤)
httpRequest.request('https://restaurant.com/order', {method: 'POST',body: JSON.stringify({ food: '奶茶', quantity: 2 })
}).then(response => {console.log('订单已提交:', response.result);
}).catch(error => {console.log('点餐失败:', error);
});

3️⃣ http.createHttp() 帮助我们做了什么?
不需要每次都拨打新电话(创建新 HTTP 连接)。
客服(HTTP 客户端)帮你记住信息,你可以设置请求头、超时时间等配置。
可以批量管理订单,比如取消、修改订单,或者查询订单状态。

4️⃣ 进阶:设置默认地址
如果你每次点餐都要重复输入地址,太麻烦了,所以你可以让客服(httpRequest)默认帮你填好地址:


// 1️⃣ 创建 HTTP 客户端,并设置默认超时时间和请求头(相当于存好地址)
let httpRequest = http.createHttp({timeout: 5000, // 设置超时时间 5 秒headers: { "Content-Type": "application/json", "Address": "我的家" } // 默认地址
});// 2️⃣ 直接点餐(不需要重复输入地址)
httpRequest.request('https://restaurant.com/order', {method: 'POST',body: JSON.stringify({ food: '披萨', quantity: 1 })
}).then(response => {console.log('订单已提交:', response.result);
});

📌 这样每次点单时,地址已经填好了,省时省力!

5️⃣ 总结
✅ http.createHttp() 就像是建立了一个外卖客服专线,你可以随时通过这个专线点餐,而不需要每次都重新拨号。
✅ 如果不用 http.createHttp(),你每次点餐都要重新拨号(创建新的 HTTP 请求实例),会很麻烦。
✅ 可以设置默认信息(比如请求头、超时时间),让所有请求更方便。
✅ 更适合频繁的网络请求,如用户登录、订单提交、查询数据等。

💡 你可以把 http.createHttp() 理解为:

  • 有它 = 有专属客服,可以随时联系,管理所有点餐(网络请求)
  • 没有它 = 每次都要重新拨号,手动输入地址,效率低

在鸿蒙 ArkTS 中,http.createHttp() 用于创建一个 HTTP 客户端实例,这个实例可以用来:

发送 HTTP 请求(如 GET、POST、PUT、DELETE)。
处理服务器返回的响应数据。
进行异步网络请求,获取远程数据(比如调用 API)。

在这里插入图片描述

// 1️⃣ 创建 HTTP 客户端(相当于联系餐厅客服)
let httpRequest = http.createHttp();// 2️⃣ 发送 GET 请求(查询菜单,相当于问客服:“你们有什么菜?”)
httpRequest.request('https://restaurant.com/menu', {method: 'GET'
}).then(response => {console.log('菜单:', response.result);  // 服务器返回菜单
}).catch(error => {console.log('获取菜单失败:', error);
});// 3️⃣ 发送 POST 请求(提交订单,相当于告诉客服:“我要点 1 份炸鸡”)
httpRequest.request('https://restaurant.com/order', {method: 'POST',body: JSON.stringify({ food: '炸鸡', quantity: 1 }) // 提交订单内容
}).then(response => {console.log('订单提交成功:', response.result);
}).catch(error => {console.log('订单提交失败:', error);
});

🔹 then() 和 catch() 在点餐中的作用
.then(response => {…}):表示 请求成功时的处理逻辑(客服给你回复)。
在 点餐场景 下,客服回复 “您的订单已确认”。
.catch(error => {…}):表示 请求失败时的处理逻辑(客服告诉你订单失败)。
在 点餐场景 下,客服说 “不好意思,这道菜卖完了”。


🔹 为什么要用 http.createHttp()?
代码更清晰、可复用
http.createHttp() 让你只创建 一个 HTTP 客户端,不用每次都重新拨号(创建新连接)。
可以共享配置
你可以在 http.createHttp() 里设置 默认请求头、超时时间,后续请求都会继承这些设置,就像你的 专属客服记住了你的点餐习惯。
更适合多次请求的场景
适用于 用户登录、查询数据、提交表单 等需要频繁交互的情况,就像你经常点餐但不想每次重新拨号。

📌 总结
✅ http.createHttp() = 创建 HTTP 客户端,相当于联系餐厅的专属客服
✅ request() = 发送 HTTP 请求,相当于让客服帮你查询菜单或点餐
✅ .then() = 请求成功后的处理,相当于餐厅回复“您的订单已确认”
✅ .catch() = 请求失败后的处理,相当于餐厅回复“这道菜卖完了”

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

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

相关文章

大模型开发(五):P-Tuning项目——新零售决策评价系统(下)

P-Tuning项目——新零售决策评价系统(下) 0 前言1 P-Tuning原理2 数据处理 0 前言 上篇文章我们介绍了使用PET方式微调BERT模型,PET属于提示词微调的一种,另一种比较常见的提示词微调是P-Tuning,我们今天在相同的项目…

分布式中间件:Redis介绍

目录 Redis 概述 Redis 的特点 高性能 丰富的数据结构 持久化 分布式特性 简单易用 Redis 的数据结构 字符串(String) 哈希(Hash) 列表(List) 集合(Set) 有序集合&…

在昇腾GPU上部署DeepSeek大模型与OpenWebUI:从零到生产的完整指南

引言 随着国产AI芯片的快速发展,昇腾(Ascend)系列GPU凭借其高性能和兼容性,逐渐成为大模型部署的重要选择。本文将以昇腾300i为例,手把手教你如何部署DeepSeek大模型,并搭配OpenWebUI构建交互式界面。无论…

系统思考—组织诊断

“未经过诊断的行动是盲目的。” — 托马斯爱迪生 最近和一家教育培训机构沟通时,发现他们面临一个有意思的问题:每年招生都挺不错,但教师的整体绩效一直提升缓慢,导致师生之间存在长期的不匹配。管理层试了很多办法,…

AI大模型学习(五): LangChain(四)

Langchian读取数据库 案例:在数据库中表格数据上的问题系统的基本方法,将涵盖使用链和代理的视线,通过查询数据库中的数据并得到自然语言的答案,两者之间的主要区别在于,我们代理可以根据多次循环查询数据库以回答问题 实现思路: 1.将问题转换成DSL查询,模型将用…

人工智能与深度学习的应用案例:从技术原理到实践创新

第一章 引言 人工智能(AI)作为21世纪最具变革性的技术之一,正通过深度学习(Deep Learning)等核心技术推动各行业的智能化进程。从计算机视觉到自然语言处理,从医疗诊断到工业制造,深度学习通过模拟人脑神经网络的层次化学习机制,实现了对复杂数据的高效分析与决策。本…

支持向量机的深度解析:从理论到C++实现

支持向量机(SVM)是一种强大的监督学习算法,广泛应用于分类和回归任务。本文详细探讨了SVM的理论基础,包括最大间隔分离超平面、软间隔和核技巧(Kernel Trick)的数学原理,并通过LaTeX公式推导其优化目标。接着,我们用C++实现了一个简单的线性SVM,包括梯度下降优化求解支…

企业如何选择研发项目进度管理软件?盘点15款实用工具

这篇文章介绍了以下工具: 1. PingCode; 2. Worktile; 3. 腾讯 TAPD; 4. 华为 DevCloud; 5. 亿方云; 6. 阿里云效; 7. CODING 码云; 8. 明道云; 9. 进度猫; 10. 轻流等。 …

c++: 容器vector

文章目录 介绍initializer_list与string的不同底层总代码 介绍 C 中的 vector 是一种序列容器,它允许你在运行时动态地插入和删除元素。 vector 是基于数组的数据结构,但它可以自动管理内存,这意味着你不需要手动分配和释放内存。 与 C 数组相…

Qt常用控件之表格QTableWidget

表格QTableWidget QTableWidget 是一个表格控件,行和列交汇形成的每个单元格,是一个 QTableWidgetItem 对象。 1. QTableWidget属性 QTableWidget 的属性只有两个: 属性说明rowCount当前行的个数。columnCount当前列的个数。 2. QTableW…

Golang学习笔记_47——访问者模式

Golang学习笔记_44——命令模式 Golang学习笔记_45——备忘录模式 Golang学习笔记_46——状态模式 文章目录 一、核心概念1. 定义2. 解决的问题3. 核心角色4. 类图 二、特点分析三、适用场景1. 编译器实现2. 财务系统3. UI组件系统 四、Go语言实现示例完整实现代码执行结果 五、…

栈概念和结构

文章目录 1. 栈的概念2. 栈的分类3. 栈的实现(数组栈)3.1 接口设计(Stack.h)3.2 接口实现(Stack.c)1)初始化销毁2)栈顶插入删除3)栈顶元素、空栈、大小 3.3 完整代码Stac…

GitCode 助力 vue3-element-admin:开启中后台管理前端开发新征程

源码仓库: https://gitcode.com/youlai/vue3-element-admin 后端仓库: https://gitcode.com/youlai/youlai-boot 开源助力,开启中后台快速开发之旅 vue3-element-admin 是一款精心打造的免费开源中后台管理前端模板,它紧密贴合…

算法.习题篇

算法 — 地大复试 模拟 while循环和MOD循环计数 1.约瑟夫问题 http://bailian.openjudge.cn/practice/3254 using namespace std;bool isNoPeople(vector<bool> c)//判断当前数组是否一个小孩都没有了 {bool nopeople true;for (bool ival : c){if ( ival true)nop…

大白话JavaScript实现一个函数,将字符串中的每个单词首字母大写。

大白话JavaScript实现一个函数&#xff0c;将字符串中的每个单词首字母大写。 答题思路 理解需求&#xff1a;要写一个函数&#xff0c;它能接收一个字符串&#xff0c;然后把这个字符串里每个单词的第一个字母变成大写。分解步骤 拆分单词&#xff1a;一般单词之间是用空格隔…

react中如何使用使用react-redux进行数据管理

以上就是react-redux的使用过程&#xff0c;下面我们开始优化部分&#xff1a;当一个组件只有一个render生命周期&#xff0c;那么我们可以改写成一个无状态组件&#xff08;UI组件到无状态组件&#xff0c;性能提升更好&#xff09;

广告营销,会被AI重构吗?

DeepSeek设计&#xff0c;即梦AI绘图&#xff0c;剪映成片。 DeepSeek的热度还在高开疯走。 用户对于各个场景下DS应用的探索也还在持续&#xff0c;各种DS的模式被挖掘出来&#xff0c;超级个体们开始给手下的大模型团队进行分工&#xff0c;实践出各种场景下最佳的排列组合方…

国产编辑器EverEdit - 宏功能介绍

1 宏 1.1 应用场景 宏是一种重复执行简单工作的利器&#xff0c;可以让用户愉快的从繁琐的工作中解放出来&#xff0c;其本质是对键盘和菜单的操作序列的录制&#xff0c;并不会识别文件的内容&#xff0c;属于无差别无脑执行。 特别是对一些有规律的重复按键动作&#xff0c;…

vscode离线配置远程服务器

目录 一、前提 二、方法 2.1 查看vscode的commit_id 2.2 下载linux服务器安装包 2.3 安装包上传到远程服务器&#xff0c;并进行文件解压缩 三、常见错误 Failed to set up socket for dynamic port forward to remote port&#xff08;vscode报错解决方法&#xff09;-C…

OmniDrive(1): 论文解读

多模态大语言模型(MLLMs)的发展推动了基于 LLM 的自动驾驶研究,以利用其强大的推理能力。然而,利用多模态大语言模型(MLLMs)强大的推理能力来改进planning具有挑战性,因为这需要超越二维推理的完整三维情境感知能力。因为这不单单需要 2D 推理还需要完整的 3D 场景感知能…