Firebase 云函数路由

dub*_*ace 4 node.js express firebase google-cloud-functions

如何在 HTTP Trigger Firebase 云函数中处理/user/:id/user/:id/report等路径并访问参数id ?

我不喜欢下一个解决方案,因为我的所有功能都将成为带有前缀/api 的功能的一部分:

const app = require('express')();
exports.api= functions.https.onRequest(app);
app.get('/user/:uid/report', (req, res) => {}):
Run Code Online (Sandbox Code Playgroud)

但我需要这样的东西:

exports['/user/:uid/report'] = functions.https.onRequest((req, res) => {
   // ...
});
Run Code Online (Sandbox Code Playgroud)

更新:不可能在托管路由中使用通配符并从中获取参数

Dou*_*son 6

您可以在 Cloud Functions for Firebase 之上使用 Firebase 托管来重写 URL 以适合您想要的路径。这意味着您必须firebase init再次添加托管(如果尚未添加)。

在您的项目中,firebase.json您必须添加一个函数重写以将所有请求发送到托管/**功能api

{
  "hosting": {
    "rewrites": [
      {
        "source": "/**",
        "function": "api"
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

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

现在,在 Functions 前面使用 Hosting,您必须能够设置缓存