優雅地請求: fetch, node-fetch, isomorphic-fetch
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種玩法之零基礎入門