RESTAPI版本控制和sdk

RESTAPI版本控制和sdk,rest,sdk,versioning,Rest,Sdk,Versioning,诸如、、之类的服务如何维护RESTAPI以及不同语言的SDK?他们是使用类似的工具生成这样的代码,还是自己维护客户机代码?我想对于github来说,它们是开源的客户端库。我的问题是: 如何在RESTAPI更改和相应的SDK更改之间同步 RESTAPI及其sdk版本控制的最佳实践是什么?必须注意的常见陷阱是什么 在Algolia,我们在RESTAPI的基础上开发了十几个API客户机。老实说,我必须说,我们为创建所有这些项目付出了很多/o\n我希望以下要点能有所帮助: 为什么我们要创建自己的API客

诸如、、之类的服务如何维护RESTAPI以及不同语言的SDK?他们是使用类似的工具生成这样的代码,还是自己维护客户机代码?我想对于github来说,它们是开源的客户端库。我的问题是:

  • 如何在RESTAPI更改和相应的SDK更改之间同步

  • RESTAPI及其sdk版本控制的最佳实践是什么?必须注意的常见陷阱是什么


  • 在Algolia,我们在RESTAPI的基础上开发了十几个API客户机。老实说,我必须说,我们为创建所有这些项目付出了很多/o\n我希望以下要点能有所帮助:

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

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

    • 起初,我们并不是所有这些语言都非常流利;因此,我们开始研究用每种语言实现的其他API客户机,以了解最佳实践
    • 我们得到了Node.js的1个人和python的1个人的帮助
    • 但是,直到我们决定将它们全部迁移到Travis.CI+插件代码覆盖率以达到80-95%的代码覆盖率+自动测试->显然,我们发现了很多错误:)
    • 一旦我们发布了一个新功能,我们需要更新我们所有的API客户端->非常痛苦
    • 为了简化自述文件的生成,我们开发了一个为所有语言生成自述文件的小工具。它是超级Algolia特有的,但您可以查看->引导也很痛苦:)
    我们学到的东西:

    • 我们自己维护所有这些,使它们的行为完全相同,无论使用何种语言->从客户的角度来看,都是非常值得欣赏的
    • 如果你的社区正在构建API客户端,那就太酷了;但他们可能不会深入测试->我们正在测试所有API客户机->质量中的所有功能
    • 如果需要的话,我们也会这样做