【问题标题】:REST API versioning and sdkREST API 版本控制和 sdk
【发布时间】:2014-08-29 05:09:50
【问题描述】:

github,twilio,algolia,stormpath 等服务如何维护不同语言的 REST API 和 SDK?他们是使用enunciate 之类的工具生成此类代码,还是他们自己维护客户端代码?我猜对于 github,它们是开源客户端库。我的问题是:

  1. 如何在rest api更改和相应的SDK更改之间同步。

  2. rest api 及其 sdk 版本控制的最佳实践是什么?必须注意哪些常见陷阱?

【问题讨论】:

    标签: rest sdk versioning


    【解决方案1】:

    在 Algolia,我们在 REST API 之上开发了十几个 API 客户端。老实说,我必须说我们为创建所有这些项目付出了很多 /o\ 我希望以下要点会有所帮助:

    为什么我们要创建自己的 API 客户端,而不是仅仅使用库/工具来生成它们(这对于 REST API 客户端来说很常见)?

    • 为了能够达到 99.99% 的 SLA,我们决定在我们的 API 客户端中实施“重试策略” -> Algolia 索引始终在 3 台机器上复制 -> 如果其中一台出现故障,API 客户端将在其他的 -> 这不能由通用库处理
    • 为了达到最佳性能,我们希望确保我们控制 HTTP 保持活动的工作方式 -> 大多数通用库也不能处理这个问题
    • 我们希望尽快强制使用 HTTPS

    我们是如何进行的?

    • 一开始,我们对所有这些语言都不是超级流利;因此我们开始研究以每种语言实现的其他 API 客户端,以了解最佳做法
    • 我们得到了 1 位 Node.js 和 1 位 python 的帮助
    • 但是直到我们决定将它们全部移至 Travis.CI + 插入代码覆盖率以达到 80-95% 的代码覆盖率 + 自动化测试 -> 显然,我们发现了很多错误 :)李>
    • 一旦我们发布了新功能,我们就需要更新我们所有的 API 客户端 -> 非常痛苦……
    • 为了简化 README 的生成,我们开发了一个小工具,为所有语言生成 README。它是 Algolia 特有的,但你可以看看 https://github.com/algolia/algoliasearch-client-readme-generator -> 引导起来也很痛苦 :)

    我们学到的东西:

    • 我们自己维护所有这些,使它们的行为完全相同,无论使用何种语言 -> 客户 POV 非常欣赏
    • 如果您的社区正在构建 API 客户端,那就太好了;但他们在测试中可能没有那么深入 -> 我们正在测试所有 API 客户端中的所有功能 -> 质量
    • 如果需要,我们会再次这样做

    【讨论】:

      猜你喜欢
      • 2012-05-31
      • 1970-01-01
      • 2018-09-30
      • 2012-12-25
      • 2017-03-18
      • 2015-03-10
      • 2013-03-04
      • 2021-06-22
      • 1970-01-01
      相关资源
      最近更新 更多