根据Node.js发布记录,其核心开发团队上个月合并了一个PR,为Node.js添加了FetchAPI。FetchAPI提供WHATWG标准接口获取资源。这是一个基于Promise的HTTP客户端,可用于简化HTTP请求。它已经在浏览器环境中得到支持。浏览器环境的兼容实现请参考Web/API/fetch,使用方法与浏览器中使用的FetchAPI一致。FetchAPI主要包括以下四个接口:fetch():该方法最常用,用于发送请求。Headers:相当于response/request的header信息,可以查询这些header信息,或者对不同的结果进行不同的操作。Request:相当于一个资源请求。Response:相当于请求的响应。这是Node.js的一个非常重要的特性。让我们来介绍一下FetchAPI是怎么来的,这个新特性对Node.js开发者意味着什么?在Web早期,跨站点执行异步请求很不方便,开发人员需要使用笨拙的方法在多个网络之间进行交互。随着InternetExplorer5中XMLHttpRequest的引入,这种情况在1998年发生了变化。它是一种旨在克服此限制的API。最初,XMLHttpRequest旨在通过HTTP获取XML数据,因此得名XMLHttpRequest。此后逐渐添加了对其他数据格式的支持,主要是JSON、HTML和纯文本。XMLHttpRequestAPI在当时提供了巨大的帮助,但随着网络的发展,它也变得笨拙到JavaScript框架(尤其是jQuery)必须将其抽象化以简化实现以及更顺畅地处理成功/错误。2015年,FetchAPI作为XMLHttpRequest的现代继承者推出,此后它已成为在Web应用程序中进行异步调用的事实标准。Fetch优于XMLHttpRequest的一个显着优势是它使用Promise功能,提供更简单、更清晰的API,同时避免回调地狱。尽管FetchAPI已经存在了一段时间,但由于某些限制,它还没有融入Node.js核心。在HackerNews上由Node.js核心贡献者回答的一个问题中,指出FetchAPI的浏览器实现依赖于基于浏览器的WebStreamsAPI和AbortController接口(用于中止获取请求),直到最近Node.js只有这个接口。因此很难决定将其纳入Node.js核心的最佳方式。在添加FetchAPI之前,请求模块是Node.js中最流行的HTTP请求方法。但是整个JavaScript生态系统发展迅速,新引入的模式使请求过时了。这里的一个关键示例是async/await,它没有在请求API中指定,由于这些限制,该项目后来被弃用。总的来说,FetchAPI进入Node.js的核心对开发人员来说是一件好事。不过,FetchAPI在Node.js中完全稳定可能需要一段时间(大约一两年),因为要使其兼容还有很多工作要做。此外,不久的将来还会有许多有趣的更新,其中之一包括为Undici添加HTTP/2支持,并最终支持FetchAPI本身。本文转自OSCHINA文章标题:Node.jshasmergedFetchAPI文章地址:https://www.oschina.net/news/185476/fetch-api-node-js
