【问题标题】:Creating an API Layer on top of Firebase Real-Time Database在 Firebase 实时数据库之上创建 API 层
【发布时间】:2025-12-26 19:40:12
【问题描述】:

我的实时 Firebase 数据库中确实存储了一些数据。我愿意通过 REST API 向我的 B2B 客户公开这些数据。

我知道 Firebase 本身就是一个 REST API,但它的身份验证机制不符合我的需求。我愿意我的客户使用在 HTTP 请求标头中传递的简单 API 密钥来访问 API。

总而言之,我需要一个位于 Firebase 实时数据库之上的 API 层,它具有以下属性:

  • 通过 HTTP 请求标头中传递的 API 密钥进行基本身份验证
  • 一些确保客户遵守 API 限制的自定义逻辑(例如每天的最大请求数)

我唯一能想到的是在 AWS lambda 中实现这一层,但这听起来也有点不对劲。从 lambda 中,我必须访问我的 Firebase 数据库并提供该数据。网络请求似乎太多了; Firebase 原生的东西会很棒。

谢谢, 古文。

【问题讨论】:

    标签: rest api firebase firebase-realtime-database aws-lambda


    【解决方案1】:

    如果他们有正确的 Api Key,为什么不提供一个简单的 API,为他们提供原始 firebase REST API 的 Oauth 令牌

    这将更加安全,因为只有您才能制作令牌,因为只有您拥有服务帐户私钥。还省去了制作整个 REST API 的麻烦。此外,Oauth 令牌过期相对较快,因此与您提供的普通密钥相比,风险较小

    我个人创建了自己的 Servlet,如果用户使用 id pass 组合进行身份验证,则用户可以在其中发布他们的数据。

    在 Servlet 中,我使用 Firebase 提供的默认 REST API 以及在我的 servlet 中生成的 Oauth。这样,我可以将来自任何客户端 api 的所有写入的数据库安全规则设置为 false。我服务器上的 REST API 和他们的 admin sdk 默认忽略安全规则。

    【讨论】:

      【解决方案2】:

      经过一番研究,我认为 AWS 是提供 API 相关功能的最佳平台。

      • Gateway API 让您在几秒钟内设置您的 API 接口
      • DynamoDB 存储您的 API 数据;您可以在此处轻松填充数据
      • AWS Lambda 让您可以编写 Gateway API 和 DynamoDB 之间的集成代码

      除此之外,该平台还提供了这些开箱即用的功能:

      • 创建、处理和验证用于身份验证的 API 密钥
      • 使用计划确保 API 使用者不超过您的 API 使用限制

      这些 AWS 服务提供了我所寻找的大部分内容。

      【讨论】: