Firebase 模拟器通过 REST 功能访问数据库

Firebase emulator hitting DB via the REST feature

我正在尝试设置模拟器,以便我可以在部署它们之前安全地开发 firebase 函数。我刚刚注意到我现在进行的一些 REST 调用失败了——任何人都知道是否无法使用实时数据库的 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)

的数据库

根据RFC 3986,路径必须 URL 中的查询参数之前。您的 URL 应该写成:

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

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


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

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