火力地堡云功能路由
如何处理像/用户/路径:ID和/用户/:ID/HTTP中触发火力地堡云功能的访问报告到PARAM ID?火力地堡云功能路由
我不喜欢一个解决方案,因为我的所有功能将是一个前缀/API的一部分:
const app = require('express')();
exports.api= functions.https.onRequest(app);
app.get('/user/:uid/report', (req, res) => {}):
但我需要类似的东西:
exports['/user/:uid/report'] = functions.https.onRequest((req, res) => {
// ...
});
您可以使用您的主机重写来映射URL到这样的功能
"rewrites": [
{
"source": "/user/*/report",
"function": "myFunction"
}
]
但是,您必须处理自己的URL才能提取每个参数
您可以在Firebase云端函数的顶部使用Firebase托管来重写URL以适应所需的路径。这意味着你必须再次firebase init
并添加主机,如果它尚未。
在项目firebase.json
你必须添加一个function rewrite所有请求发送到托管/**
运作api
:
{
"hosting": {
"rewrites": [
{
"source": "/**",
"function": "api"
}
]
}
}
部署时,你会得到输出托管URL。使用这个而不是你的函数URL。
现在,在Hosting功能前面,您必须能够设置caching。
我不认为这是好的解决方案,因为最终我只有一个云上的功能来配置超时和内存, 对? – iiylll
这是正确的。但是在重写主机时不能使用通配符,因此无法将通配路径重定向到常规的https功能。这就是我们今天所拥有的一切。随意提交描述您情况的功能请求:https://firebase.google.com/support/contact/bugs-features/ –
我不认为这是行得通的。 –
我的答案可行,您可以在网址中使用通配符,查看文档https://firebase.google.com/docs/hosting/url-redirects-rewrites。 –
对不起,我以前的粗鲁答案,根据文档的URL是glob表示法,所以你可以在其中添加*。这里是我的api在firebase云funcitons中实现的一个例子https://jsfiddle.net/1x4crn9t/ –