优雅地请求: fetch, node-fetch, isomorphic-fetch

fetch API 相对于传统 xhr 的优点显而易见,传统的 xhr 设计的过度复杂:

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

而 fetch 则使用已经广泛流行的 Promise API:

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

有趣的一点是浏览器中 fetch 的 polyfill 们使用 xhr 实现,而在最新的 spec 中 xhr 是用 fetch 实现的,这意味着 fetch 尽管有更优雅的 API 设计却比 xhr 更 low level

为什么在 Node.js 中使用 fetch?

Node.js 中的 http 模块大部分都提供大而全的功能,比如 requestsuperagent,而 node-fetch 可以说是最轻量的之一,没有过度的设计。类似的还有 got

另一个值得一提的就是在不同 JavaScript 环境中使用一致的 API 能带来更好的开发体验,更别说是使用如此优雅设计的 fetch API :)

而对于 cross-runtime 的应用,使用 isomorphic-fetch 可以同时照顾 node 和 browser 环境。

MDN: Fetch API – Web APIs

    原文作者:HTTP
    原文地址: https://juejin.im/entry/57cea7988ac2470062d7b886
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞