前端知識點---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.pswp.cn/web/71678.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71678.shtml
英文地址,請注明出處:http://en.pswp.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 場景感知能…