Firebase云function路由

如何在HTTP中处理类似/ user /:id/ user /:id / report的path触发Firebase云function,并访问参数ID?

我不喜欢下一个解决scheme,因为我所有的函数都是前缀/ 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) => { // ... }); 

您可以在Firebase的云端function之上使用Firebase托pipe服务来重新编写url以适应您所需的path。 这意味着你将不得不再次firebase init并添加托pipe,如果它还没有。

在你的项目firebase.json你必须添加一个函数重写来发送所有的请求到主机/**到函数api

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

部署时,您将在输出中获得托pipeURL。 使用这个而不是你的函数的URL。

而现在,在主持function之前,您必须能够设置caching 。

你可以使用你的主机重写来映射URL到这样的function

 "rewrites": [ { "source": "/user/*/report", "function": "myFunction" } ] 

但是你必须处理自己的URL来提取每个参数