写 Node.js,终于能用 Fetch 发请求了

news/2024/7/10 2:12:47 标签: vue, js, javascript, nodejs, python
js_content">

Node.js 支持 Fetch API 啦!

2d16016182ed529566e3d653aad395e2.png

在以前,使用原生的 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 这些。

98596c3df330bcde4f0a791f59df4541.png

在最新的 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 中用到 FetchNPM 包也可以在 Node.js 里以同样的方式工作了,这些包同样可以实现跨平台兼容了~

Node.js v17.5 中,它还是个实验特性,现在想要试用的话可以通过 node --experimental-fetch flag 开启。

Fetch 的优势在于它是原生支持,并且可以兼容多平台,其他的请求库估计都要慢慢的靠边站了~ 对此你有啥看法?


http://www.niftyadmin.cn/n/1250913.html

相关文章

阿里二面被问 Promise 原理,10:03进去的,10:08就出来了…

又到一年金三银四,面试官动不动就让手写一个 Promise 可咋整?一切视图交互和功能实现都离不开 JavaScript,毋庸置疑,异步编程是 JS 庞大知识体系中当之无愧的核心。单线程执行让异步处理成了 JS 每时每刻都在面对的问题&#xff0…

如何中断已发出去的请求?

↓推荐关注↓面试官:请求已经发出去了,如何取消掉这个已经发出去的请求?面试者:(脑海里立马产生一个疑惑:已经发出去的请求还能取消掉?) 这个......这个......还真不知道。面试完,马上找度娘...…

啥?css 也有状态管理

CSS用于交互的方式无非就那么几种:伪类::hover、:link、:active ...动画:animation过渡动画:transition这些交互方式组合起来,真的可以玩出一些花样,例如我们本文的主题,CSS的状态管理&#xff…

vue3 区别于 vue2 的“与众不同”

希望本篇文章能帮你加深对 Vue 的理解,能信誓旦旦地说自己熟练Vue2/3。除此之外,也希望路过的朋友可以帮助我查漏补缺🤞。内容混杂用法 原理 使用小心得,建议收藏,慢慢看。区别生命周期的变化整体来看,变…

搞事情,这种跨域方案快要被禁用了!

一句话描述document.domain 将变为可读属性。别着急,预计最早变化时间是 Chrome 101 版本,现在最新版是 97。对我们有啥影响?如果你的业务里有通过更改 document.domain 来进行跨域的场景,马上就芭比Q了,得快点进行改造…

2022 前端领域的新变化

vue3步入成年期想必大家看到了 "Vue 3 将在 2022 年 2 月 7 日成为新的默认版本!" 的新闻了,目前各个大厂都有团队开始在新的项目上使用 Vue 3 ,许多活跃的小公司也纷纷加入行列,这预示着 Vue 3 已经开始步入了成年期&a…

前端工程师生产环境 debugger 小技巧

本文首发于政采云前端团队博客:前端工程师生产环境 debugger 技巧https://www.zoo.team/article/prod-debugger导言开发环境 debug 是每个程序员上岗的必备技能。生产环境呢?虽然生产环境 debug 是一件非常不优雅的行为,但是由于种种原因&…

postman遇到对手了?这个神器从接口设计、调试到管理一站式全包

作为软件开发从业者,API 调试是必不可少的一项技能,在这方面 Postman 做的非常出色。但是在整个软件开发过程中,API 调试只是其中的一部分,还有很多事情 Postman 无法完成,或者无法高效完成,比如&#xff1…