我正在使用Firebase函数,并试图对我的api进行版本化。我正在使用快递作为所有的教程建议。然而,使用此解决方案,我们使用Firebase托管而不是云函数。
托管: https://xxxx.firebaseapp.com
云函数: https://xxxx.cloudfunctions.net
最接近我正在寻找的解决方案是这 。
const app1 = express();
app1.use(cors({ origin: true }));
app1.get("*", (request, response) => {
if(request.url.includes("/v1/")){
response.send("V1: "+request.path);
}
else{
response.send("V2: "+request.path);
}
});
const stats = functions.https.onRequest(app1);
module.exports = {
stats
};但是,在Firebase函数中只能看到一个函数:
https://xxxx.cloudfunctions.net/stats此外,您只能处理一种HTTP请求(GET、POST等)。
我正在寻找的是在Firebase函数中拥有:
https://xxxx.cloudfunctions.net/stats/v1/ (including GET, POST, PUT or in another case separate functions with “/:userId” “/save”, etc)
https://xxxx.cloudfunctions.net/stats/v2/
https://xxxx.cloudfunctions.net/item/v1/可以用云函数来完成吗?
发布于 2018-12-05 16:29:39
预计您只会看到一个函数,它的名称是从index.js导出的。所有URL必须通过这个函数锚定。看起来,您希望/stats/*和/items/*都将通过您的函数进行路由,但这不是它的工作方式。
如果您想要不同的路径前缀,您要么需要不同的函数来处理它们,要么您需要为它们设置一个单一的公共前缀。例如,您可以导出一个名为"api“的函数,然后使用它处理所有不同类型的查询:
/api/stats/...
/api/items/...您还可以考虑对每个不同版本的api使用不同的函数(Express应用程序),让Firebase将不同版本的应用程序路由到不同的应用程序,而不是让一个应用程序在运行时检查版本。
https://stackoverflow.com/questions/53631628
复制相似问题