问题标签 [node-request]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
160 浏览

node.js - 如何处理节点 http 请求

我试图了解如何等待 http 请求在节点中完成。我想发出两个 http 请求,并在 http 请求完成后调用的函数中使用结果。

我正在使用异步请求,并且一直在使用 async.series,如下所示:

控制台输出显示:

我想等到每个http请求函数完成后,再进行下一部分代码。我如何实现这一目标?

0 投票
0 回答
45 浏览

node.js - 节点请求不保存 zip 流

在 node-webkit 中,我正在尝试下载远程文件并将其保存到与节点可执行文件相同的文件夹中(Windows)

控制台日志中的下载进度看起来非常好,它一直到 0。但是没有文件被创建并且关闭事件也没有被触发。

0 投票
1 回答
1843 浏览

php - 如何在 NodeJS 的请求中对表单字段中的数组进行编码?

我正在使用一个 API,它要求我将一个数组放入表单字段中。给出的示例是用 PHP 编写的,但我使用的是 NodeJS。API 期望其中一个字段是一个数组,我很难弄清楚如何做到这一点。

PHP 示例如下所示:

在 NodeJS 中,我尝试过这个(除其他外):


当我尝试像这样传递一个对象时:reference: {'line1':'foo'}我从节点收到一个错误:

我怎样才能最好地把这个圆钉钉在那个方孔里?

0 投票
3 回答
360 浏览

javascript - Javascript/Node 中从不执行用户代码的隐藏线程:是否可能,如果可能,是否会导致竞争条件的神秘可能性?

根据评论/答案,请参阅问题底部的更新:这个问题实际上是关于不执行回调的隐藏线程的可能性。


我有一个关于节点请求模块的潜在神秘场景的问题,其中:

  • 一个完整的 HTTP 请求在网络上构建和执行(需要很多毫秒甚至几秒)

  • ...在本地机器上运行时执行单个函数之前(通常以纳秒为单位?) - 请参阅下文了解详细信息

我发布此内容主要是为了确保我不会误解有关 Node / JS / Request 模块代码的内容。

请求模块中的示例(请参阅该部分中的第二个示例),是这样的:

我在代码片段中指出了我的神秘场景。

假设 Node 进程在指示点挂起,但 Node 内部(在隐藏线程中,对 Javascript 不可见,因此不调用任何回调)能够构造请求,并通过网络发送;假设挂起一直持续到收到响应(比如说,分成两个块)并等待节点处理。(这种情况肯定是神秘的,我什至不确定理论上是否可行。)

然后假设挂起结束,上面的Node线程被唤醒。此外,假设(以某种方式)Node 能够一直处理响应,直到执行上述代码中的回调函数(但又没有移过原始代码路径中代码中的“挂起”点) ,如果这在理论上是可能的)。

上述神秘的场景在理论上是可能的吗?'data'如果是这样,在对象上安排事件之前,是否会通过网络接收数据包并进行组合,准备好传递给回调函数?在这种情况下,如果可能的话,我想这个'data'事件会被错过。

同样,我知道这是一个神秘的场景——考虑到所涉及的内部机制和编码,这在理论上可能是不可能的。

那是我的问题 - 上述神秘的场景,其极不可能的比赛条件,但理论上是可能的吗?

我问只是为了确保我没有遗漏一些关键点。谢谢。


更新:来自评论和答案:我现在已经澄清了我的问题。“神秘场景”需要有一个隐藏线程(因此不能执行任何用户代码,包括回调)来构造请求,通过网络发送它并接收响应 - 没有任何回调触发,包括'data'回调 - 并在回调准备好被调用时停止'response',等待(单个)可见 JS 线程唤醒。

0 投票
0 回答
1299 浏览

node.js - 使用 Node.js 请求模块进行管道时关闭事件不起作用?

我目前正在为我的聊天应用程序开发两个 Node.js 应用程序:第一个是处理后端逻辑的 API,另一个应用程序是使用 API 的客户端(带有 Angular.JS 的前端)。

客户端应用程序正在使用请求模块将 HTTP 请求代理到 API,因为在我找到这篇文章之前我无法让它们相互通信:https ://blog.javascripting.com/2015/01/17/dont-hassle-with -cors/

API(订阅事件流):

API 代码正在运行,当客户端调用方法 /api/xyz 时,我在 API 的日志中看到“开始”。

客户端(对 API 的代理 HTTP 请求):

客户端代码也运行良好。当浏览器选项卡关闭时,我在客户端应用程序的日志中看到“关闭”。

然而,问题是当我关闭浏览器选项卡时,我在 API 的日志中看不到“关闭”。连接永远不会在 API 上关闭,因为在 API 端永远不会检测到关闭事件。

有谁知道为什么?

0 投票
1 回答
1141 浏览

node.js - 限制事件驱动的 Nodejs HTTP 请求

我有一个net.Server在 TCP 套接字上侦听旧系统的节点。当收到消息时,它会向另一个 http 服务器发送一个 http 请求。简化后,它看起来像这样:

问题是套接字每秒可以读取大约 1000 次。然后这些请求使 http 服务器超载。几乎立即,我们得到了多秒的响应时间。

在运行 Apache 基准测试时,很明显,http 服务器可以在 100 毫秒的响应时间内每秒处理超过 1000 个请求 - 如果我们将并发请求的数量限制为大约 100 个。

所以我的问题是,当每个请求在事件回调中单独触发时,使用request-promise(通过扩展,request和)库限制未完成的并发请求的最佳方法是什么?core.http.request

请求的文档说:

请注意,如果您在循环中发送多个请求并创建多个新池对象,maxSockets则不会按预期工作。要解决此问题,请将 request.defaults 与您的池选项一起使用,或者使用maxSockets循环外的属性创建池对象。

我很确定这一段告诉了我问题的答案,但我无法理解。我使用默认值来限制打开的套接字数量:

这没有帮助。目前我唯一的想法是手动管理队列,但我认为如果我只知道常规的方法,那将是不必要的。

0 投票
0 回答
759 浏览

json - Node/Express Node/Request 流式处理 JSON 对象

我正在实现一个节点应用程序,该应用程序使用节点/请求来获取 JSON 对象,然后通过管道传输响应以处理传入对象并进一步传递它们。在功能测试中,我使用 Node/Express 来模拟使 JSON 数组可用的实际端点。我的问题是整个对象数组被传输而不是逐个对象。

这是消费者应用程序(简化):

在测试中

输出:

我的期望是 ResultStream 将被数组中的每个 JSON 对象调用,但我收到整个数组。我错过了什么或误解了什么?

0 投票
1 回答
152 浏览

javascript - 检查在新端口上运行的应用程序

我需要创建应用程序来获取特定端口的请求并将其代理到不同端口上的新服务器

例如,以下端口 3000 将成为端口 9000 的代理,并且您实际上在 9000 上运行应用程序(在后台),因为客户端中的用户单击 3000

http://localhost:3000/a/b/c

http://localhost:9000/a/b/c

我尝试类似

  1. 是正确的方法吗?
  2. 我该如何测试它?我问,因为如果我在端口 3000 中运行节点应用程序,我不能将第一个 URL 放在客户端http://localhost:3000/a/b/c中,因为该端口已经被占用。有解决方法吗?
0 投票
1 回答
53 浏览

javascript - 代理请求超过时间提供错误

我想代理对新端口的调用,所以我将创建服务器的所有逻辑封装到一个函数中

在代理请求功能中,我输入了以下代码

问题是,当我第一次调用时,我看到代理工作正常,并在我第二次点击浏览器时在新的服务器端口 5000 中侦听错误

我应该如何避免这种情况

0 投票
1 回答
6980 浏览

node.js - 使用 node-request 和 fs Promisified 下载图像,在 Node.js 中没有管道

我一直在努力成功下载图像而不将其传送到 fs。这是我已经完成的:

有效的输入可能是:

我确实认为问题出在处理body. 我已经尝试将它转换为Buffernew Buffer(body, 'binary')等)几种编码,但都失败了。

感谢您的帮助!