Node.js 支援 fetch API

六一發表於2022-03-12

最新的 Node.js v17.5 引入了對 fetch API 的支援 ,對前端同學來說,非常熟悉。

fetch() 是一種流行的跨平臺 HTTP 客戶端 API,可在瀏覽器和 Web/Service Workers 中執行。

雖然目前在 v17.5.0 版本為試驗性支援,但是如果在今後的 LTS 版本中正式支援了,就不需要依賴第三方 HTTP 請求模組。

fetch API 提供了 WHATWG 標準介面獲取資源,這是一個基於 Promise 的 HTTP 客戶端,可以用來簡化 HTTP 請求,在瀏覽器環境已支援,瀏覽器環境的相容性實現參考 Web/API/fetch,使用方式與瀏覽器中使用 Fetch API 一致。

fetch API 主要包含以下四個介面:

  • fetch():該方法是最常用的,用於傳送請求。
  • Headers:相當於 response/request 的頭資訊,可以使你查詢到這些頭資訊,或者針對不同的結果做不同的操作。
  • Request:相當於一個資源請求。
  • Response:相當於請求的響應。

為什麼要使用?

在 Node.js 中使用 fetch() 的主要原因有兩個:

  • Node.js 社群中有一場激烈的討論,討論如何以客戶端開發者熟悉的方式發展 Node 的 HTTP 堆疊,同時又能與伺服器程式設計模型配合,如何超越目前作為核心部分的 HTTP 模型的限制,以及如何支援 HTTP/2-3 而不過度加重使用者的負擔,而 fetch() 正是這一對話的第一步。
  • fetch() 實現基於 Undici,該專案位於 Node.js Github 專案組織下,其中的幾位貢獻者也是 Node.js 專案的貢獻者,致力於為 Node.js 開發快速、可靠且符合規範的 HTTP 客戶端,比內建的 HTTP 模組還要快,因為它摒棄了原有的 HTTP 模組,直接構建在 socket 之上。

如何使用?

目前 Node.js 17.5 中的 fetch() 是一項實驗性的功能,執行指令碼時需要需要新增 --experimental-fetch,即可在指令碼內使用 fetch()。

相關文章