我正在使用云功能在免费火花层上调用另一个云功能.
是否有一种特殊的方式来调用另一个云功能?或者您只是使用标准的http请求?
我试过直接调用其他函数:
exports.purchaseTicket = functions.https.onRequest((req, res) => {
fetch('https://us-central1-functions-****.cloudfunctions.net/validate')
.then(response => response.json())
.then(json => res.status(201).json(json))
})
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误
FetchError:请求 https:// us-central1-functions-****.cloudfunctions.net/validate failed,reason:getaddrinfo ENOTFOUND us-central1-functions - *****.cloudfunctions.net us-central1-functions -*****cloudfunctions.net:443
哪个听起来像firebase阻止连接,尽管它是谷歌拥有的,因此它不应该被锁定
Spark计划仅允许对Google拥有的服务的出站网络请求.
如何使用云功能调用另一个云功能?
javascript node.js firebase google-cloud-platform google-cloud-functions
我一直在尝试新的firebase可调用云功能,firebase functions:shell我继续得到以下错误
请求的内容类型不正确.
和
从功能收到的响应:400,{"error":{"status":"INVALID_ARGUMENT","message":"Bad Request"}}
这是我想在shell上调用此函数
myFunc.post(dataObject时)
我也尝试过这个
myFunc.post().表(dataObject时)
但后来我得到错误的编码(表单)错误.dataObject是有效的JSON.
更新:
我想我需要firebase serve用于本地仿真这些callable https功能.数据需要像这样在post请求中传递(注意它在data参数中的嵌套方式)
{
"data":{
"applicantId": "XycWNYxqGOhL94ocBl9eWQ6wxHn2",
"openingId": "-L8kYvb_jza8bPNVENRN"
}
}
Run Code Online (Sandbox Code Playgroud)
我无法想象的是如何通过REST客户端调用该函数时传递虚拟身份验证信息
我刚刚升级到使用 Firebase Cloud Functions v1.x。根据这个答案
可调用函数与 HTTP 函数完全相同
考虑到这一点,我尝试转换我的 pre-1.x 模拟代码:
export const myHttpAction = functions.https.onRequest((req, res) => {
try {
const result = await myHttpActionWorker(req.body);
return res.send({ status: 'OK' });
} catch (err) {
console.error(err);
return res.status(500).send({ status: 'Server error' });
}
});
Run Code Online (Sandbox Code Playgroud)
到以下几点:
export const myHttpAction = functions.https.onCall(async (data, context) => {
console.log(context.auth);
try {
const result = await myHttpActionWorker(data);
return { status: 'OK' };
} catch (err) {
console.error(err);
return { status: 'Server error' };
} …Run Code Online (Sandbox Code Playgroud)