【问题标题】:can firebase callable functions be used to build an API?可以使用firebase可调用函数来构建API吗?
【发布时间】:2021-03-12 01:54:44
【问题描述】:

我知道firebase的云可调用函数和http函数的区别已经澄清here。但是,我仍然对构建用于火库的 CRUD 操作的 API 的特定用例感到困惑。

我知道如何使用 http 函数和 express 执行此操作,但 http 函数不会像可调用函数那样传递带有用户令牌的上下文。

你可以/如何创建一个类似于使用 http 函数(见下文)的 express 的路由器,它允许你创建一个 API 来处理公共和私有路由的 GET、POST、PUT 和 DELETE 请求中间件都在一个可调用函数中?或者您是否需要为每个“路线”创建一个新的可调用函数?

// Define Routes
app.use('/api/users', require('./routes/users'));
app.use('/api/auth', require('./routes/auth'));
app.use('/api/contacts', require('./routes/contacts'));

您是否还可以在特定路由(如 http 函数)上连接要从 firebase 托管调用的可调用函数(见下文)?

"hosting": {
    "public": "client/build",
    "rewrites": [
      {
        "source": "/api{,/**}",
        "function": "api"
      },
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  },

还是坚持通过 http 函数传递 express 应用程序并仅通过在请求标头中传递用户令牌来进行身份验证会更好?

【问题讨论】:

    标签: firebase express http https google-cloud-functions


    【解决方案1】:

    在检查了这个Community Answer之后,我发现这是不可能的,你可以看到:

    对可调用函数的 HTTP 请求并非真正来自 URL。他们来自互联网上的任何地方。它可以是网站、Android 或 iOS 应用程序,或者只是知道调用该函数的协议的人。

    因此,除非您通过在可调用函数的data 中发送 URL 来解决此问题,否则它将无法正常工作。即使你这样做了,它也违反了可调用函数的原则,所以我建议你使用 Http Functions 来达到这个目的。

    【讨论】:

    • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
    • 这并不能真正回答我的问题。我的问题是如何您会使用具有可调用功能的路由器吗?由于它们没有请求和响应对象,与 http 函数相比,这样做的方式是否不同?
    • 你是对的 Josh,对此感到抱歉,事实上我做了一些研究,发现这是不可能的,我会更改答案以更好地解释它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多