1

Node.js终于有了Fetch API

 2 years ago
source link: https://www.jdon.com/59291
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Node.js终于有了Fetch API

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK