在Firebase函数中使用Express中间件HTTPS请求

时间:2017-03-23 17:40:59

标签: javascript express firebase google-cloud-functions

我在使用具有Firebase功能的Express中间件时遇到问题。在这个example中,一个函数被挂钩到app()实例,如下所示:

app.get('*', (req, res) => {
  res.send(`Hello ${req.user.name}`);
});

exports.authorizedHello = functions.https.onRequest(app);

如何使用快速中间件来实现多种功能?

这是我尝试解决它的方法之一,但调用端点会返回404:

app.get('/authorizedHello', (request, response) => {
    response.send(`Hello ${request.user.name}`);
})

app.get('/authorizedBye', (request, response) => {
    response.send(`Bye ${request.user.name}`);
})

exports.authorizedHello = functions.https.onRequest(app);
exports.authorizedBye = functions.https.onRequest(app);

我确定我做错了。你能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:3)

请考虑云功能的基本路径使用您的导出名称,因此在这种情况下,您的有效网址将为:

https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedHello/authorizedHello
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedHello/authorizedBye
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedBye/authorizedHello
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedBye/authorizedBye

这就是示例使用get('*', ...)的原因。执行deploy命令后,您应该会看到显示的URL。

您有四个网址,因为您导出了两次相同的Express应用。

答案 1 :(得分:1)

谢谢你的好问题。你的问题是给我一个使用模板引擎的线索。也许我不在你的问题主题之内。但是,我只是想分享,如果有人想使用像帕格的模板引擎。在这里查看我的示例代码。

&#13;
&#13;
$phones = "Samsung Galaxy S8~LG G6~iPhone 7 Plus~ Motorola Z2";

$phones  = str_replace("Galaxy S", '<span class="galaxy">galaxy</span>', $phones);

$value = preg_replace('/(\d+.*?)(~)/', '($1)$2', $phones . "~");

$value = "<li>". str_replace("~", ",</li><li>", substr($value,0,-1)) . "</li>";

Echo $value;
&#13;
&#13;
&#13;

然后你可以访问这样链接。 https://us-central1-[YOURAPP].cloudfunctions.net/main/ https://us-central1-[YOURAPP].cloudfunctions.net/main/login

很抱歉打扰你的问题。但我不得不在google上找到我的问题,比如使用&#34;如何使用模板引擎来google云功能&#34;我从来没有得到正确的答案。

我很高兴,因为您的问题中的示例代码。这让我有所改进。谢谢 。 抱歉我的英文不好:)