【问题标题】:How to version firebase callable cloud functions endpoints?如何对 Firebase 可调用云函数端点进行版本控制?
【发布时间】:2021-07-31 15:18:56
【问题描述】:

Firebase 提供 HTTPS Callable function in Cloud Functions,它们与 HTTP 函数相似但不完全相同。

使用 http 函数,可以通过将版本字符串添加到端点 URL(例如 /api/v1/customers/3)或在标头信息中包含自定义 MIME 类型中的版本来进行 API 端点版本控制。

问题:在 Firebase 中版本可调用函数的正确方法是什么,以确保仍然依赖旧有效负载结构的客户端在部署参数更改的端点后不会中断?

【问题讨论】:

    标签: firebase google-cloud-functions


    【解决方案1】:

    AFAIK 在 Cloud Functions for Firebase 文档中没有关于这一点的建议。

    使用 Callable Cloud Functions,您可以模仿您在问题中描述的 API 端点版本控制的两种方法。

    "将版本字符串添加到端点 URL"

    您可以拥有多个名称中带有版本号的 Callable Cloud Functions,例如:

    exports.doSomethingInThebackEndv1 = functions.https.onCall((data, context) => {
      // ...
    });
    
    exports.doSomethingInThebackEndv2 = functions.https.onCall((data, context) => {
      // ...
    });
    

    “在Header信息中包含自定义MIME类型中的版本”

    您可以在从前端调用函数时将版本添加到传递给函数的对象中。以 JS SDK 为例:

    var doSomethingInThebackEnd = firebase.functions().httpsCallable('doSomethingInThebackEnd');
    doSomethingInThebackEnd({ foo: 'bar', version: 1 })
      .then((result) => {...});
    

    然后在后端:

    exports.doSomethingInThebackEnd = functions.https.onCall((data, context) => {
      
      const version = data.version;
    
      // do different things depending on the version value
    
    });
    

    我承认它不是一个开箱即用的可扩展解决方案,并且在许多不同版本的情况下它可能需要大量手动操作......

    【讨论】:

    • 感谢您的回答!看起来这两种方法是我唯一的选择:(我曾希望通过firebase采用更标准化的方法,例如以某种方式通过上下文对象传递版本字符串。无论如何,将这个问题保持一段时间,看看是否有更多答案到达。
    • @B12Toaster 您是否通过其他渠道获得了其他答案或方法建议?
    • 不是真的,现在会将您的答案标记为已接受,如果您认为该问题值得更多关注,也请为该问题投票,thx :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 2020-10-18
    • 2021-10-09
    • 2017-03-22
    • 2011-10-13
    • 1970-01-01
    相关资源
    最近更新 更多