使用firebase云功能向非谷歌服务器发送POST请求

Sto*_*ton 39 javascript firebase google-cloud-functions

我想知道是否可以使用firebase云功能向非谷歌服务器发送一个帖子请求(我可以找到我需要在火焰计划上与非谷歌服务器进行交互)

基本上我想在每次将值添加到数据库时POST到运行在arduino上的外部服务器.

我查看了文档并找到了云函数响应HTTP post请求(HTTP云函数)的示例,但似乎无法找到任何发布到外部服务器的示例.这可能吗?

sto*_*odi 54

这可以使用request模块完成:

// import the module
var request = require('request');

// make the request
request('put your external url here', function (error, response, body) {
    if (!error && response.statusCode == 200) {
        //here put what you want to do with the request
    }
})
Run Code Online (Sandbox Code Playgroud)

注意:这仅适用于付费计划.如Firebase定价页面所述,无法使用免费的Spark计划调用非Google API :

Spark计划仅允许出站网络请求到Google拥有的服务.配额内允许入站调用请求.在Blaze计划中,云功能提供永久免费套餐.每月免费提供前2,000,000次调用,400,000 GB-sec,200,000 CPU-sec和5 GB Internet出口流量.您只需支付超过此免费分配的使用费.定价基于调用总数和计算时间.计算时间可根据为函数配置的内存量和CPU量而变化.使用限制也通过每日和100s配额强制执行.有关更多信息,请参阅云功能定价.

  • 如果您的请求是另一个Google拥有的服务,这将适用于未付帐户(Spark Plan)."Spark计划仅允许出站网络请求到Google拥有的服务.配额内允许入站调用请求." (https://firebase.google.com/pricing/) (6认同)
  • 它更像是来自./project/functions文件夹中的`npm i --save request` (5认同)
  • 还需要付费的firebase帐户 - 适用于Blaze计划 (3认同)
  • 我收到“错误:错误解析触发器:在使用 var request = require('request'); 进行 Firebase 部署时找不到模块“请求”; (3认同)
  • @matth你需要安装请求模块`npm install request` (2认同)
  • 任何人偶然发现这一点 - 不幸的是,请求已被弃用:https://www.npmjs.com/package/request (2认同)

小智 8

您需要安装该软件包.转到终端中的Firebase-Funcions目录并键入

npm install request
Run Code Online (Sandbox Code Playgroud)

要么

npm install request-promise
Run Code Online (Sandbox Code Playgroud)

使用此示例进行测试:https://www.npmjs.com/package/request

  • 实际上,为了成功使用firebase函数,所有`npm install`都需要使用`--save`标志来完成.在部署时要注意避免恼人的"无法找到模块"错误. (2认同)
  • @HirdayGupta自[npm@5.0.0(2017年5月25日)](https://blog.npmjs.org/post/161081169345/v500)起,默认情况下会添加--ave (2认同)