繁体   English   中英

Firebase 云函数路由

[英]Firebase cloud functions routing

如何在 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) => {}):

但我需要这样的东西:

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

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

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

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

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

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

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

您可以使用您的托管重写将 URL 映射到这样的函数

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

但是您必须自己处理 URL 以提取每个参数

我会为每个资源导出一个函数。

const router = express.Router();
router.get('/:userid/report', reportGenerator);

// Edit: using router directyly didn't worked for me
// you can also define your routes in the express app object
const app = express();
app.use(router);
exports.user = functions.https.onRequest(app);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM