我想知道是否可以使用 firebase 云功能将发布请求发送到非谷歌服务器(据我所知,我需要参与 blaze 计划才能与非谷歌服务器进行交互)
基本上,每当将值添加到我的数据库时,我都想 POST 到在 arduino 上运行的外部服务器。
我查看了文档并找到了让云功能响应 HTTP 发布请求(HTTP 云功能)的示例,但似乎找不到任何发布到外部服务器的示例。这可能吗?
我想知道是否可以使用 firebase 云功能将发布请求发送到非谷歌服务器(据我所知,我需要参与 blaze 计划才能与非谷歌服务器进行交互)
基本上,每当将值添加到我的数据库时,我都想 POST 到在 arduino 上运行的外部服务器。
我查看了文档并找到了让云功能响应 HTTP 发布请求(HTTP 云功能)的示例,但似乎找不到任何发布到外部服务器的示例。这可能吗?
注意:请求包已被弃用,如 npm 页面request-npm 中所述。考虑使用其他替代方案,如axios
这可以使用request
module来完成:
// 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 定价页面所述,无法使用免费 Spark 计划调用非谷歌 API :
Spark 计划只允许对 Google 拥有的服务发出出站网络请求。配额内允许入站调用请求。在 Blaze 计划中,Cloud Functions 提供永久免费层。每月免费提供前 2,000,000 次调用、400,000 GB 秒、200,000 CPU 秒和 5 GB 的 Internet 出口流量。您只需为超过此免费配额的使用量付费。定价基于调用总数和计算时间。计算时间根据为函数配置的内存和 CPU 量而变化。使用限制也通过每日和 100 秒配额强制执行。有关更多信息,请参阅Cloud Functions 定价。
您需要安装该软件包。转到终端中的 Firebase-Funcions 目录并输入
npm install request
或者
npm install request-promise
使用此示例进行测试:https : //www.npmjs.com/package/request
请记住将module安装在函数文件夹中!
cd functions
npm i --save request
对于那些想要使用 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);
});
});
}
axios也是处理网络调用的优秀库之一。一些特点: