问题标签 [requestjs]

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 回答
433 浏览

javascript - 使用 request 获取 API 结果,并集成到 Hubot 响应中

我有一个 Hubot 插件,它监听 JIRA webhook,并在创建新票证时在房间内宣布:

我想扩展它,对远程 API 执行查找 - 基本上,我想要查找额外的信息,然后添加到我传递给的消息中room.messageRoom。我正在使用请求,因为我需要摘要支持。

因此,以下代码段本身就可以正常工作。

这就是我的 JS/Node 新手出现的地方……哈哈。

我可以在回调中处理响应 - 但我真的确定如何在回调之外访问它?

我应该如何将它集成到 webhook 处理代码中 - 我是否只需将代码段移动到 if 块中,并将其分配给一个变量?

0 投票
1 回答
680 浏览

node.js - 出站 HTTPS 请求非常慢

我使用 Node 0.12.2 和 Express 4.13.3 作为 RESTful 层的前端。从 cURL/Postman 调用 API 需要大约 9 毫秒。但是,使用 Request 2.60.0 从 Node 进行调用,大约需要 60 毫秒。这些是 HTTPS 调用。删除 HTTPS 并仅使用 HTTP 将 Node 降低到约 7 毫秒。curl/Postman 调用和 Node.js 调用都发生在同一台机器上的同一环境中,没有负载。我似乎找不到导致 Node 比其他所有东西慢得多的原因。任何帮助将不胜感激。

0 投票
2 回答
3359 浏览

node.js - RequestJS - SSL 连接已授权,但 getPeerCertificate() 返回 null

我在节点 v4.1.2 上使用节点包RequestJS v2.65.0

我正在尝试从某些站点(例如 GitHub.com)读取 SSL 证书这以前在节点 0.12 上工作。然而,在节点 4.2.1 上,getPeerCertificate()返回null.

例如:

将打印出来

即建立了安全连接,但证书为空。

根据我的(基本)理解,如果连接被授权,应该有一个对等证书。

我尝试了许多 SSL 站点,结果是一样的。请求中是否有选项、Node 4 的错误或我对SSL/TLS 如何在节点中工作的误解?

0 投票
0 回答
2185 浏览

node.js - 使用请求和cheerio设置代理以使用nodejs进行抓取

我正在尝试使用请求和cheerio 设置一个基本的刮板。问题是我需要从不同的地理位置获取网站以监控正在显示的广告和实际内容的差异。在没有代理部分的情况下设置它相当容易,但是当我在请求选项中添加代理时,它不起作用(即:我根据我的实际位置获取内容)。

以防万一,这完全是出于教育目的。

这是我正在使用的基本代码(我是一个新手):

关于如何使这项工作的任何想法?这是我在 stackoverflow 上的第一个问题,几个月前我才开始编码。

提前致谢!

0 投票
4 回答
7618 浏览

node.js - node.js 中 ForEach 中的异步请求

我是 node.js(和 request.js)的新手。我想从具有不同路径的特定 url 中获取网站的正文(在下面的示例中http://www.example.com/path1http://www.example.com/path2等。 ) 并将此数据记录在具有键/值映射的对象中(下面的 siteData[path])。

我的问题是:

  • if 语句 (index === length) 看起来不是确定异步请求是否完成的正确方法。我应该如何正确检查请求是否已完成?
  • 当我执行上面的代码时,我得到一个错误(node) warning: possible EventEmitter memory leak detected. 11 unpipe listeners added. Use emitter.setMaxListeners() to increase limit.,我尝试链接request(url, function(...){}).setMaxListeners(100);,但没有奏效。

谢谢你的帮助!

0 投票
1 回答
468 浏览

node.js - 为什么 requestjs 会拒绝适用于 Firefox 的自签名 SSL 证书?

这是情况。我创建了一个自签名 CA 证书,并用它来签署第二个证书以与 https 一起使用。Web 服务器是 nginx,它对 expressjs 应用程序执行 SSL 终止和反向代理。为了验证信任链是否正确,我在 Firefox 中安装了 CA,并且能够通过 https 访问该网站而没有警告,正如预期的那样。此外,我可以使用 来检查服务器的证书openssl x509 -in server.crt -text -noout,并且我可以看到预期的颁发者,尤其是主题的预期公用名。(注意:这里使用的通用名称是 IP 地址,以防可能引起麻烦。)

但是,当我尝试使用 requestjs 通过 nodejs 脚本访问服务器时,事情并没有那么顺利。在脚本中,使用如下代码加载 CA 证书:

但是我收到了这个错误(为了便于阅读,换行,原来是一行):

特别可疑的是,它似乎在说“证书列表”是空的。在其他答案中建议使用rejectUnauthorized: falsein the options ,但这对于此应用程序来说不是一个很好的选择,因为我想要进行身份验证。

我怎样才能让 requestjs/nodejs 信任这个证书?


服务器证书的内容,由报告的openssl x509 -text


以及用于生成该证书的配置文件:

0 投票
2 回答
11028 浏览

javascript - NodeJS 请求多个 api 端点

好的,所以我正在尝试使用请求模块向 API 端点发出两个或更多请求。我正在渲染一个 HTML 文件并使用以下代码将返回的 JSON 传递给车把模板:

然后我可以很容易地在我的车把模板中迭代这个 JSON。

我遇到的问题是,我现在需要使用多个数据源,其中将根据类别 JSON 响应构建类别列表,并根据员工 JSON 响应构建员工列表。我想要一个可以做到这一点的简单解决方案,但可以将其扩展为使用任意数量的数据源。

下面是我对一个数据源的完整代码片段:

这适用于一个端点,但如前所述,我现在需要使用多个请求并拥有多个数据源,例如:

我很欣赏上面的内容不是那样的,但我希望这可以帮助传达我想要实现的目标。

提前致谢 :)

0 投票
2 回答
4651 浏览

javascript - 将 requestjs 响应分配给变量

如何将主体分配给request.get('http://someurl/file.json', function(err, response, body) {})变量?

例如:

文件.json

应用程序.js

提前致谢 :)

0 投票
1 回答
1114 浏览

node.js - Node.js 和 Requestjs:通过管道将转换流作为文件上传到 Request.js

我正在使用 node-archiver ( https://github.com/archiverjs/node-archiver ) 在内存上创建一个 zip 文件。使用归档器的管道功能,我将所有内容通过管道传输到转换流。如果需要,我可以将此流通过管道传输到文件,但我想让 Request ( https://github.com/request ) 读取此流,因此我不必访问文件系统。

下面,我的转换流被称为bridge. 我没有在 Transform 上做任何特别的事情(我相信它也可能是 PassThrough 流)。

这不起作用(这file部分似乎是空的)。但是,如果我将我的桥转换流通过管道传输到文件写入流——并且在流完成后——我在表单文件操作中为该文件创建一个读取流,它就可以工作。当然,因为现在我有一个完整的文件并且request可以读取它(这里我不需要桥,只需要常规fs流)

我想知道是否request要求读取流是文件流——以及我在这里可能做错什么。

0 投票
0 回答
915 浏览

javascript - 使用 AngularJS 下载 zip 文件

我在 AngularJS 应用程序中下载 zip 文件时遇到问题。该设置是一个 AngularJS 应用程序,具有使用 Hapi 的相当轻量级的节点后端。我想要做的是单击 Angular 中的一个按钮来调用 Angular Apps 后端,然后后端向单独的服务请求 zip 文件,然后需要将该 zip 文件返回给 AngularJS应用程序。

在后端我有这个(使用 requestjs 简单的 HTTP 客户端):

应用程序的后端部分似乎可以工作,因为如果我取消注释管道并将其发送到 fs 进行写入,那么文件每次都会写入后端文件系统。问题是我不想将数据写入后端,我想将它传递回 AngularJS 前端。在我的前端,我希望能够做这样的事情:

问题是我的下载总是损坏。我想我需要想办法将流传回前端并在那里解析它,或者在后端等待整个流并将其连接成前端可以使用的东西。我曾尝试使用该.on 'data'事件来做到这一点,但 zip 文件仍然损坏。

如何将下载 zip(或流)从后端传递到前端?

更新-

$scope.selectedItem.download()调用一个$http调用 AngularJS 应用程序后端的服务。该$http调用应将响应(来自download节点后端函数的二进制响应)包装在一个 promise 中,该 promise 返回给控制器。

api服务调用: