我想知道是否有可能使用firebase云功能向非google服务器发送帖子请求(我可以找到我需要处于大火计划以便与非谷歌服务器进行交互)< / p>
基本上我想在每次将值添加到数据库时POST到运行在arduino上的外部服务器。
我查看了文档并找到了云函数响应HTTP post请求(HTTP云函数)的示例,但似乎无法找到任何发布到外部服务器的示例。这可能吗?
答案 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 也是处理网络呼叫的出色库之一。一些功能: