Fetch API 簡介
Fetch API 是一種現代的原生 JavaScript API,可讓您以簡單且靈活的方式發出 HTTP 請求。它為 XMLHttpRequest 等舊技術提供了更簡單、更乾淨的替代方案。 Fetch 是基於 Promise 的,這意味著它可以很好地與現代 JavaScript 功能(例如 async/await 和 .then() 連結)配合使用。
Fetch API 提供了一種易於理解的與 RESTful API 互動的方式,可以處理簡單和複雜的請求。它在現代瀏覽器中得到廣泛支持,是 Web 開發的常用工具。
Fetch API 的主要特性:
- 基於 Promise:基於 Promise 構建,提供一種簡單直觀的方式來管理非同步程式碼。
- 支援所有 HTTP 方法:GET、POST、PUT、DELETE、PATCH 等
- 沒有回調地獄:感謝 Promises,它避免了嵌套回調。
- 串流支援:Fetch 支援流,這使得它適合高效處理大量資料。
- 改進的錯誤處理:與 XMLHttpRequest 不同,Fetch API 不會拒絕 HTTP 錯誤狀態(例如 404 或 500)。你必須手動處理這些。
安裝
Fetch API 內建於現代網頁瀏覽器中,這表示如果您在瀏覽器環境中工作,則無需安裝任何內容。它本身可用並可用於發出 HTTP 請求。
但是,如果您在 Node.js 環境中工作(原生不支援 fetch),則可以安裝諸如 node-fetch 之類的 polyfill。
1.使用 npm (適用於 Node.js 環境):
如果您在 Node.js 環境中工作並且需要使用 Fetch,您可以安裝 node-fetch:
npm install node-fetch
然後,將其匯入到您的專案中:
const fetch = require('node-fetch');
使用取得 API
Fetch API 提供了一個全域 fetch() 函數,您可以使用它來發出 HTTP 請求。此函數傳回一個 Promise,該 Promise 解析為表示對請求的回應的 Response 物件。
文法
fetch(url, [options])
參數
-
網址:
- 型別:字串
- 描述:請求傳送到的 URL。這可以是完整 URL 或基於請求中定義的基本 URL 的相對 URL。
-
選項 (可選):
- 類型:對象
-
描述:用於修改請求的選用設定物件。一些常見的選項包括:
- 方法:HTTP 方法(例如 GET、POST、PUT、DELETE)。
- headers:要包含在請求中的自訂標頭(例如,內容類型、授權)。
- body:請求正文(僅適用於 POST 或 PUT 等方法)。
- mode:控制跨域請求。 (例如,「cors」、「no-cors」、「同源」)。
- cache:指定請求如何與快取互動(例如,「no-store」、「reload」)。
- 憑證:控制 cookie 和身份驗證(例如,「同源」、「包含」)。
基本獲取請求 (GET)
使用 Fetch API 的基本 GET 要求非常簡單。 fetch() 函數向提供的 URL 發出請求並傳回一個使用 Response 物件解析的 Promise。
範例程式碼:
這是使用 Fetch API 的簡單 GET 請求的範例:
npm install node-fetch
說明:
- fetch() 向給定的 URL 發起請求。
- .then(response => response.json()):透過解析 JSON 資料將 Response 物件轉換為 JavaScript 物件。
- .catch():捕獲並記錄任何錯誤,例如網路錯誤或失敗的請求。
使用 Fetch 發出 POST 請求
Fetch API 也允許您發出 POST 請求。 POST 請求通常用於向伺服器發送數據,例如提交表單或建立新資源。
POST 請求的語法:
const fetch = require('node-fetch');
範例程式碼:
以下是向伺服器發送資料的 POST 請求範例:
fetch(url, [options])
說明:
- method: 'POST':指定這是 POST 請求。
- body: JSON.stringify(postData):將資料轉換為 JSON 字串,然後將其傳送到請求正文中。
- headers:將 Content-Type 標頭設定為 application/json 以指示傳送的資料為 JSON 格式。
處理回應資料
Fetch API 傳回的 Response 物件包含多個用於與回應資料互動的屬性和方法。
回應的關鍵屬性與方法:
- response.json():將回應正文解析為 JSON。
- response.text():將回應正文解析為字串。
- response.blob():將回應解析為二進位大物件(對於處理影像或檔案很有用)。
- response.ok:一個布林值,指示回應狀態碼是否在 200-299 範圍內(成功)。
- response.status:回應的 HTTP 狀態碼(例如,200 表示成功,404 表示未找到)。
- response.headers:伺服器回應請求回傳的標頭。
範例程式碼:
以下是如何處理不同類型的回應資料的範例:
npm install node-fetch
說明:
- response.ok 檢查回應是否成功(狀態碼 200-299)。如果沒有,則會拋出錯誤。
- response.json() 被呼叫以將回應解析為 JavaScript 物件。
處理取得錯誤
與 XMLHttpRequest 不同,Fetch API 不會自動拒絕 HTTP 錯誤狀態(例如 404 或 500)。只有在發生網路故障或請求被阻止時才會拒絕。要處理 404 或 500 等錯誤,您需要檢查 response.ok 屬性。
錯誤處理範例:
以下是如何在 Fetch 中有效處理錯誤的範例:
const fetch = require('node-fetch');
說明:
- response.ok:檢查回應狀態碼是否在 200–299 範圍內(表示成功)。
- 如果請求失敗(例如404或500錯誤),則會拋出錯誤並帶有相應的狀態碼。
結論
Fetch API 是一個強大的現代工具,用於在 JavaScript 中發出 HTTP 請求。它提供了一種乾淨直覺的方式來使用 REST API,而其基於承諾的架構使管理非同步程式碼變得容易。 Fetch 支援所有 HTTP 方法、錯誤處理和回應解析,是 Web 開發人員的必備工具。
無論您是獲取資料、提交表單還是處理身份驗證,Fetch API 都可以提供對 HTTP 請求的靈活性和控制,使其成為現代 Web 應用程式的絕佳選擇。
以上是取得API完整指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript核心數據類型在瀏覽器和Node.js中一致,但處理方式和額外類型有所不同。 1)全局對像在瀏覽器中為window,在Node.js中為global。 2)Node.js獨有Buffer對象,用於處理二進制數據。 3)性能和時間處理在兩者間也有差異,需根據環境調整代碼。

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver Mac版
視覺化網頁開發工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Dreamweaver CS6
視覺化網頁開發工具