【问题标题】:Firebase emulator hitting DB via the REST featureFirebase 模拟器通过 REST 功能访问数据库
【发布时间】:2021-06-11 12:52:58
【问题描述】:

我正在尝试设置模拟器,以便在部署 Firebase 功能之前安全地开发它们。我刚刚注意到我现在正在执行的一些 REST 调用失败 - 任何人都知道是否无法使用 RealTime DB 的 REST 功能https://firebase.google.com/docs/reference/rest/database

我正在尝试使用此 URL 访问它

http://localhost:9000/?ns=<PROJECT ID>-default-rtdb/development/DISHES.json

因为这是我将 firebaseConfig.databaseURL 设置为(Google 建议的 here

奖励信息:如果我尝试通过邮递员对 URL 进行 GET 操作,它会创建另一个名为 fake-server (http://localhost:4000/database/fake-server: null) 的数据库 ????

【问题讨论】:

  • 据我所知,REST API 应该可以在模拟器上运行。你能编辑你的问题来显示你做了什么,以及你得到的错误吗?
  • 对不起,弗兰克 - 匆忙忘记了。很快就会做到的
  • 我已经更新了@FrankvanPuffelen 的问题 - 再次:抱歉

标签: firebase rest firebase-realtime-database firebase-tools


【解决方案1】:

根据RFC 3986,路径必须在URL 中的查询参数之前。您的 URL 应改为:

http://localhost:9000/development/DISHES.json?ns=<PROJECT ID>-default-rtdb

请注意更正后的 URL 如何将查询参数附加到最后。 (您在问题中提供的 URL 将被解析为具有一个查询参数 ns,其值为 &lt;PROJECT ID&gt;-default-rtdb/development/DISHES.json,这不是有效的命名空间名称。这解释了您所看到的错误。)


仅供参考,您似乎是通过将字符串 databaseURL 与路径连接起来来构建 URL 的——这可能会导致您在上面看到的令人惊讶的结果。考虑在您选择的语言/框架中使用 URL 解析器/格式化程序,它可以正确处理 URL 部分。例如,在 JavaScript 中,您可以使用下面的 sn-p:

const url = new URL(databaseURL); // Parse URL (including query params, if any)
url.pathname = '/development/DISHES.json';
yourFetchingLogic(url.toString()); // Reconstruct the URL with path replaced

【讨论】:

  • 感谢您对使用 URL 解析器的帮助和建议 - 非常有用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 2017-04-10
  • 1970-01-01
  • 2023-04-02
  • 2021-12-16
  • 2021-08-22
  • 2013-02-07
相关资源
最近更新 更多