火力地堡云功能路由

问题描述:

如何处理像/用户/路径: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才能提取每个参数

+0

我不认为这是行得通的。 –

+0

我的答案可行,您可以在网址中使用通配符,查看文档https://firebase.google.com/docs/hosting/url-redirects-rewrites。 –

+0

对不起,我以前的粗鲁答案,根据文档的URL是glob表示法,所以你可以在其中添加*。这里是我的api在firebase云funcitons中实现的一个例子https://jsfiddle.net/1x4crn9t/ –

您可以在Firebase云端函数的顶部使用Firebase托管来重写URL以适应所需的路径。这意味着你必须再次firebase init并添加主机,如果它尚未。

在项目firebase.json你必须添加一个function rewrite所有请求发送到托管/**运作api

{ 
    "hosting": { 
    "rewrites": [ 
     { 
     "source": "/**", 
     "function": "api" 
     } 
    ] 
    } 
} 

部署时,你会得到输出托管URL。使用这个而不是你的函数URL。

现在,在Hosting功能前面,您必须能够设置caching

+0

我不认为这是好的解决方案,因为最终我只有一个云上的功能来配置超时和内存, 对? – iiylll

+0

这是正确的。但是在重写主机时不能使用通配符,因此无法将通配路径重定向到常规的https功能。这就是我们今天所拥有的一切。随意提交描述您情况的功能请求:https://firebase.google.com/support/contact/bugs-features/ –