![](/img/trans.png)
[英]Routing with express and consign in Firebase Cloud Functions
[英]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.