Node.js終於有了Fetch API

banq發表於2022-03-04

Fetch API 由來已久,它的推出預示著一個實時和互動式網頁的新時代。2022 年 2 月 1 日,Node.js 核心團隊合併了一個拉取請求,將 Fetch API新增到Node.js。

 

2015年,Fetch API作為XMLHttpRequest的現代繼承者被推出,它隨後成為在Web應用中進行非同步呼叫的事實標準。

與XMLHttpRequest相比,Fetch的一個顯著優勢是: 使用了promises,允許一個更簡單、更乾淨的API,同時避免了回撥地獄。

儘管Fetch API已經存在了一段時間,但由於一些限制,它還沒有被納入Node.js的核心。

在Hacker News上一個由Node核心貢獻者回答的問題中指出,瀏覽器的Fetch API實現依賴於基於瀏覽器的Web Streams API和AbortController介面(用於中止獲取請求),直到最近Node.js中才有這個AbortController介面。

在增加Fetch API之前,請求模組request module 是Node中進行HTTP請求的最流行方法。

但是,整個JavaScript生態系統迅速發展,新引入的模式使request過時了:一個重要例子是async/await;

request API中沒有這方面的規定,而且由於這些限制,該專案後來被廢棄了。

2018年,Undici作為Node.js的一個更新更快的HTTP/1.1客戶端被推出,支援管道和池等功能。經過核心團隊的努力工作,Undici使Node.js中的fetch()實現成為可能。

 

如何使用Fetch

Fetch API是作為一個高階函式提供的,在其最基本的版本中,它接收一個URL併產生一個promise ,此promise可解析為響應。

fetch("http://example.com/api/endpoint")
  .then((response) => {
    // Do something with response
  })
  .catch(function (err) {
    console.log("Unable to fetch -", err);
  });

你也可以通過在URL後面附加一個可選的物件來改變獲取過程的執行方式,這允許你改變諸如請求方法、請求頭資訊和其他選項。請求的響應是一個物件,它包含了我們請求的返回後設資料,它由響應資料、頭資訊、請求日期等元素組成。

 

Fetch 已經作為 Node v17 中的實驗性功能提供。如果您有興趣在主版本之前試用它,您需要先下載Node.js 版本並將其升級到 17.5

 

相關文章