You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Firebase中通过自定义URL获取参数并传递给云函数

如何让Firebase云函数获取自定义URL中的路径参数?

看起来你离解决问题只差一步啦!问题出在你获取参数的方式上——你现在用req.query.bar去拿路径参数,但实际上Firebase托管的重写路径参数是存在req.params对象里的,req.query是用来获取URL中?后面的查询参数(比如?bar=xxx这种),和路径里的参数不是一回事。

下面是具体的修正步骤:

1. 确认Firebase托管重写规则(你的配置其实是对的)

你的firebase.json里的重写规则没问题:

"rewrites": [
  { "source": "/:bar*", "function": "foo" },
  { "source": "**", "destination": "/index.html" }
]

这里的/:bar*会匹配所有以/开头的路径,把路径部分作为bar参数传递给云函数foo。如果只想匹配单个路径段(比如只接收/parameter而不是/parameter/subpath),可以把source改成"/:bar"(去掉末尾的*)。

2. 修改云函数代码,正确获取路径参数

把函数里的req.query.bar替换成req.params.bar,这样就能拿到URL路径里的参数值了。修改后的代码示例:

exports.foo = functions.https.onRequest((req, res) => {
  // 路径参数存在req.params中,而非req.query
  const barValue = req.params.bar;
  console.log('bar = ' + barValue);
  console.info(barValue);
  
  // 示例:返回参数值给客户端
  res.status(200).send(`Received parameter: ${barValue}`);
});

3. 部署修改后的配置和函数

别忘了重新部署你的云函数和托管配置,这样修改才会生效:

  • 部署云函数:firebase deploy --only functions
  • 部署托管配置:firebase deploy --only hosting

现在当你访问https://<my-project-id>.firebaseapp.com/parameter时,云函数就能正确拿到parameter这个值啦!

内容的提问来源于stack exchange,提问作者prplehayes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:42:57