我应该在新项目中使用“请求”模块吗?

2024-03-13

The “请求”模块 https://github.com/request/request长期以来一直是 Node.js 的标准。他们最近已弃用 https://github.com/request/request/issues/3142图书馆。

我正在开始一个新项目,并寻找最好的解决方案来建立我的网络。我开始使用本机“https”模块 https://nodejs.org/api/https.html,但遇到了一个又一个问题。使用request模块似乎很简单并且工作得很好。还有很多其他图书馆 https://github.com/request/request/issues/3143来替换request module.

一般来说,您应该尽可能避免使用已弃用的库。但这个经验法则在这里适用吗?

使用“请求”模块开始一个新项目是否不好?如果是的话,新标准是什么?


我个人不会开始一个新项目request()库,除非它具有我绝对需要的其他库所没有的功能,或者除非我需要另一个依赖于该库的模块request()模块本身。

当我有选择的自由时,我会使用got() https://www.npmjs.com/package/got而是用于新项目。选择从替代方案清单 https://github.com/request/request/issues/3143这是个人决定,因此您只需评估它们各自具有的界面类型以及它们具有哪些功能。对于我通常使用这种类型的库所做的事情,got()看起来简单干净,从头开始构建,有承诺,满足我的需求,而且我使用它没有任何问题。

Axios https://www.npmjs.com/package/axios, 节点获取 https://www.npmjs.com/package/node-fetch and 超级代理人 https://www.npmjs.com/package/superagent优点是您可以在 Node.js 和浏览器中使用类似的界面。所有这些都很受欢迎并且被广泛使用。

I tried bent https://github.com/mikeal/bent,但没有点击它的编程界面。

我个人更愿意使用那些明确目标是随着语言的新发展、nodejs 库的新发展而不断发展并随着时间的推移添加新功能的库,而不是声称不会添加新功能的库。

我还喜欢使用从核心内置 Promise 支持的库,而不是仅作为包装器添加,因为我现在使用 Promise 进行所有异步编程。


检查替代方案的一些其他资源:

功能对比图 https://github.com/sindresorhus/got#comparison(由制作者撰写got())

从 request 迁移到 get() https://github.com/sindresorhus/got/blob/main/documentation/migration-guides/request.md


而且,如果您想了解为什么request()图书馆已进入维护模式,请阅读here https://github.com/request/request/issues/3142.

简而言之,它是一个旧的架构,侧面粘有大量功能,但由于有太多模块依赖于它,因此他们无法真正破坏其 API 来修复或平滑问题。而且,由于它如此受欢迎,它阻碍了设计更简洁界面的竞争解决方案的成功。因此,我们决定让以更现代的方式设计的替代方案继续前进,request()将进入维护模式以继续支持依赖于它的其他模块,但不会尝试演变为更现代的界面。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该在新项目中使用“请求”模块吗? 的相关文章

随机推荐

  • 导入类型时 Sveltekit Typescript 解析错误

    我在一个全新的 Sveltekit 项目中有这个非常简单的组件
  • Spring data mongodb 使用 MongoTemplate 从文档中删除属性

    我有一个如下所示的文档 id ObjectId 5864ddd8e38112fd70b89893 class com apic models UserReg name xxx email email protected cdn cgi l
  • REQUEST_URI 与显式路径和文件名不匹配

    真的很困惑 因为形式和语法看起来都很好 REQUEST URI 的 RewriteCond 与显式路径和文件名不匹配 隔离时 REQUEST FILENAME 的 RewriteCond 匹配得很好 我已经使用 phpinfo 验证了 RE
  • 尽管同时实现了 hashCode() 和 equals(),HashSet 仍添加了重复条目

    我有以下课程 class Point double x y constructor and other functions here public boolean equals Point p if p null return false
  • Node.js 存档器需要通过 glob 排除文件类型的语法

    使用 archiver js 适用于 Node js 我需要从递归 多子目录 存档中排除图像 这是我的代码 const zip archiver zip zlib level 9 const output await fs createWr
  • Python 脚本 - 连接到 SSH 并运行命令

    我已经知道有 Python 的 ssh 模块 但这不是我正在寻找的 我想要的是一个 python 脚本来执行以下操作 gt 连接到 用户输入 SSH 主机 gt 使用凭据 由用户提供 连接 gt 在 SSH 主机上运行命令 telnet 到
  • 使用 ST25 android SDK 进行 NFC 标签密码保护

    我正在与ST25 标签 更具体地说是 type5 标签 ST25DV64K 适用于 Android 的 ST25 SDK 有一些有趣的示例和教程 我仍然在努力使用文档末尾提供的代码示例here https www st com resour
  • MySQL - 如何使用 LIKE 搜索精确的单词匹配?

    我使用此查询来选择数据 mysql query SELECT FROM products WHERE product name LIKE search 唯一的问题是 它有时会选择比我想要的更多的东西 例如 我想选择产品 BLA 但我的查询也
  • Internet Explorer 11 与 Asp.Net 4.0 的会话问题

    我遇到一个奇怪的问题 我在 asp net 4 0 中开发了一个网站 它在所有浏览器上都能正常工作 因为我也在处理会话 因此用户必须登录才能使用该网站 在 Internet Explorer 11 上 当您访问网站 url 时 它会在 ur
  • 快速for循环与睡眠

    我有一个 Swift 4 ios 应用程序 按下按钮时会显示随机消息和照片 这工作正常 但我想创建一个无限循环来在按下按钮时显示随机消息 照片 我尝试了多种方法来实现这一目标 但没有一个有效 在主线程完成之前 标签和图像视图似乎不会更新 下
  • 让 ScrollView 与自动布局和情节提要一起使用

    我正在尝试为我想要构建的应用程序制作一个非常简单的布局 但我似乎正在努力使用 ScrollView 并通过 Storyboard 让它工作 基本上我正在尝试构建以下内容 我已经使用几个教程完成了约束 但它要么不滚动 要么看起来错误 有什么建
  • 与 React 内联自定义 `::-webkit-scrollbar`

    我怎样才能申请 webkit scrollbar在 React 中使用内联样式将伪元素添加到组件 你不能写pseudo内联选择器 需要在css中添加 参考这个link https developer mozilla org en US do
  • 关闭时 SqlDependency 订阅不会从 dm_qn_subscriptions 中删除

    My SQL依赖关系工作正常 当应用程序退出时 代理队列和服务会正确删除 我确实执行SqlDependency Stop 按照终止进程之前的建议 但我注意到由SQL依赖关系应用程序关闭后 仍保留在表 sys dm qn subscripti
  • watir-webdriver 黑色屏幕截图

    我正在使用 watir webdriver 浏览我的网站并在不同的浏览器中抓取屏幕截图 有时 在 IE 中截取的屏幕截图尺寸正确 但颜色全黑 同时运行的 Firefox 测试看起来不错 browser driver save screens
  • Javascript window.open 不工作

    好的 我正在尝试登录推特 这段代码中没有打开窗口 收到警报的响应不为空 并且是指向登录屏幕的链接 有任何想法吗 var url twitter login php var con createPHPRequest con open POST
  • 参数和列表哪个更好

    我当前的代码如下 它是作为代理暴露给客户端的WCF服务方法 public UnifiedDTO GetAllCardTitle string trainSymbolOrCarLocation DateTime startDate DateT
  • 为什么应用程序安装了两次?

    当我运行 Android App Studio 时 单元格是应用程序 安装 两次 有两个应用程序 一个称为 SplashScreenActivity 另一个称为 Doctor Quiz 我的应用程序 两者是平等的 如果我卸载一个 另一个也会
  • 在 django 1.7 中包含静态 js 文件

    这是一部分settings py STATIC URL static STATICFILES DIRS os path join BASE DIR static HTML 模板 load staticfiles vendor jquery
  • 哪种洪水填充算法性能更好?

    我正在尝试实现一种与洪水填充类似的算法 问题是我不确定应该以什么方式实现它 例如递归 非递归 我知道每一种都有其缺陷 但其中一种必须比另一种更快 当非递归每次分配 4 个新点时 递归会在堆栈上打开新函数 非迭代的示例 Stack
  • 我应该在新项目中使用“请求”模块吗?

    The 请求 模块 https github com request request长期以来一直是 Node js 的标准 他们最近已弃用 https github com request request issues 3142图书馆 我正