通俗易懂的例子:點外賣 🍔🥤
想象一下,你在家里點外賣,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() = 請求失敗后的處理,相當于餐廳回復“這道菜賣完了”