標籤:

優雅地請求: fetch, node-fetch, isomorphic-fetch

fetch API 相對於傳統 xhr 的優點顯而易見,傳統的 xhr 設計的過度複雜:

const request = new XMLHttpRequest()nrequest.responseType = jsonnrequest.open(GET, /url, true)nrequest.onload = () => {n console.log(request.response)n}nrequest.onerror = () => {n console.log(shits happen!)n}nrequest.send(null)n

而 fetch 則使用已經廣泛流行的 Promise API:

fetch(/url).then(res => {}).catch(err => {})n

有趣的一點是瀏覽器中 fetch 的 polyfill 們使用 xhr 實現,而在最新的 spec 中 xhr 是用 fetch 實現的,這意味著 fetch 儘管有更優雅的 API 設計卻比 xhr 更 low level

為什麼在 Node.js 中使用 fetch?

Node.js 中的 http 模塊大部分都提供大而全的功能,比如 request、superagent,而 node-fetch 可以說是最輕量的之一,沒有過度的設計。類似的還有 got。

另一個值得一提的就是在不同 JavaScript 環境中使用一致的 API 能帶來更好的開發體驗,更別說是使用如此優雅設計的 fetch API :)

而對於 cross-runtime 的應用,使用 isomorphic-fetch 可以同時照顧 node 和 browser 環境。

---

MDN: Fetch API - Web APIs

推薦閱讀:

JMeter-HTTP請求sampler詳細說明
這種情況下,304還是200更好?
雲計算的1024種玩法之零基礎入門

TAG:Nodejs | HTTP |