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

时间:2017-04-14 16:48:01

标签: javascript firebase google-cloud-functions

我想知道是否有可能使用firebase云功能向非google服务器发送帖子请求(我可以找到我需要处于大火计划以便与非谷歌服务器进行交互)< / p>

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

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

5 个答案:

答案 0 :(得分:42)

这可以使用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
    }
})

注意:这仅适用于付费套餐。如Firebase pricing page所述,无法使用免费的Spark计划调用非Google API:

  

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

答案 1 :(得分:6)

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

npm install request

OR

npm install request-promise

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

答案 2 :(得分:2)

请记住在函数文件夹中安装模块!

cd functions
npm i --save request

答案 3 :(得分:1)

对于那些想要使用JSON正文进行发布的人,您可以采用这种方式。 (我知道我前一阵子需要)

export function postWithBodyToExternalUrl(url: string, bdy: any): Promise<ReqResponse> {

  const request = require('request');

  const options = {
    url: url,
    json: true
  };
  return new Promise(function (resolve, reject) {
    request(options, function (err, resp) {
      if (err) {
        console.log(err);
        reject({ err: err });
      }
      resolve(bdy);
    });
  });
}

答案 4 :(得分:0)

axios 也是处理网络呼叫的出色库之一。一些功能:

  • 从浏览器发出XMLHttpRequests
  • 从node.js发出http请求
  • 支持Promise API
  • 拦截请求和响应
  • 转换请求和响应数据
  • 取消请求
  • 自动转换JSON数据
  • 针对XSRF的客户端支持
  • github上的
  • 67k + 个星星
  • github documentation for more