我正在使用http调用来调用一个云函数。
网址:' https://api.shipengine.com/v1/labels/rates/rateid,
现在我需要在函数调用发生时动态地传递值。如何将值传递到该URL。我也附加了我的云函数。
exports.shipmentlabelwithreturnid = functions.https.onRequest((req, res) => {
var request = require("request");
var rateid = req.body.RateId;
console.log(rateid);
var options = { method: 'POST',
url: 'https://api.shipengine.com/v1/labels/rates/'+ rateid,
headers:
{ 'content-type': 'application/json',
accept: 'application/json'
}
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
});
1条答案
按热度按时间kxe2p93d1#
你应该在你的Cloud Function中使用promise来处理异步任务。默认情况下,
request
不返回promise,所以你需要为请求使用接口 Package 器,比如request-promise
,它“返回一个常规的Promises/A+兼容的promise”,如下所示:此外,重要的是要注意,你需要对“火焰”或“火焰”定价计划。
事实上,免费的“Spark”计划“只允许出站网络请求到谷歌拥有的服务”。
由于https://api.shipengine.com不是Google拥有的服务,因此您需要切换到“Flame”或“Blaze”计划。
关于你必须使用promise来处理异步任务的事实,我建议你观看Firebase团队的以下视频:https://www.youtube.com/watch?v=7IkUgCLr5oA&t=28s和https://www.youtube.com/watch?v=652XeeKNHSk,它们解释了这个关键概念。