大家好,我是若川。持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列
大家好,我是 ConardLi
,今天给大家带来一个令人兴奋的好消息:Node.js 支持 Fetch API
啦!
在以前,使用原生的 Node.js API
发送一个 HTTP 请求非常麻烦,你可能要写下面的代码:
const https = require('https')
const options = {hostname: 'nodejs.cn',port: 443,path: '/todos',method: 'GET'
}const req = https.request(options, res => {console.log(`状态码: ${res.statusCode}`)res.on('data', d => {process.stdout.write(d)})
})req.on('error', error => {console.error(error)
})req.end()
所以通常,我们可能会引入一些第三方的 NPM
包,比如 axios、needle、node-fetch、request
这些。
在最新的 Node.js v17.5
版本中,增加了对 Fetch API
的支持,所以无需借助这些第三方 HTTP
请求库啦。
Fetch API
可能大家都比较熟悉了,他是当前最流行的跨平台 HTTP Client API
,目前已经可以在浏览器和 Web/Service Workers
中运行,当前 Web 环境里用到最多的请求方式应该就是它了。
Node.js
中的Fetch API
基于 Undici
实现,它提供了一个 WHATWG
标准接口来获取资源,并且也是基于 Promise
的,使用方式基本和浏览器中一致,包括四个核心模块:
fetch()
- 用于发起请求的函数Headers
类 - 用于处理请求头和响应头Request
类 - 表示传入请求的实例Response
类 - 表示传入响应的实例
const res = await fetch('https://www.conardli.top');
const json = await res.json();
console.log(json);
其实这并不是简单的支持了一个新的原生 HTTP
请求库那么简单,这意味着很多之前在 Web
中用到 Fetch
的 NPM
包也可以在 Node.js
里以同样的方式工作了,这些包同样可以实现跨平台兼容了~
在 Node.js v17.5
中,它还是个实验特性,现在想要试用的话可以通过 node --experimental-fetch flag
开启。
Fetch
的优势在于它是原生支持,并且可以兼容多平台,其他的请求库估计都要慢慢的靠边站了~ 对此你有啥看法?
················· 若川简介 ·················
你好,我是若川,毕业于江西高校。现在是一名前端开发“工程师”。写有《学习源码整体架构系列》20余篇,在知乎、掘金收获超百万阅读。
从2014年起,每年都会写一篇年度总结,已经写了7篇,点击查看年度总结。
同时,最近组织了源码共读活动,帮助3000+前端人学会看源码。公众号愿景:帮助5年内前端人走向前列。
识别上方二维码加我微信、拉你进源码共读群
今日话题
略。分享、收藏、点赞、在看我的文章就是对我最大的支持~