api - 当您可以实现版本控制时,为什么开发人员对发布 API 如此珍贵?

标签 api architecture versioning asp.net-web-api

每当我听到有关发布第 1 版 API 的讨论时,总是伴随着以下一般想法:

We can't release our API yet because we have to get it right the first time.



这是 Vic Gundotra 最近的一个例子,但在 API 发布的前一天,还有许多其他的,包括 Stackoverflow 本身。

我不明白的是,为什么第一个版本必须如此“正确”?使用 API,您可以实现版本控制和良好的文档,如果您做得好,这并不难,为什么对版本 1 API 如此宝贵?

从版本到版本,因为它是版本化的,API 可以在没有任何破坏性更改的情况下发生巨大变化,因为仍然支持旧版本。我想知道为什么发布 API 的大问题..?

最佳答案

From version to version, because it's versioned, the API can change dramatically without any breaking changes, since the old version is still supported.



这意味着两件事:
  • 维护一个 API 的多个版本。即使您只支持“最后 3 个版本”,这仍然是一种负担。特别是,如果您公开了稍后要删除的功能,则意味着您无法进行任何清理,这些清理将作为删除的一部分提供,直到有更多版本出现和消失。考虑由于 API 的重大变化而可能对存储数据产生的任何影响——当它们被多个系统使用时迁移存储表示,在不同的发布时间表上更新,是一个真正的痛苦。 (是的,实现和 API 之间存在差异 - 但 API 的更改通常最终意味着整个堆栈的更改。)
  • 最终激怒了很多开发者。即使你给出了很多警告,如果他们不得不进行大量的重写,人们也会生气,因为 1.0 版本是垃圾,当 1.4 出现时,1.0 将被删除。

  • 正确设计 API 是一项棘手的工作。是的,在实用主义和完美主义之间需要取得平衡——但这并不像你想象的那么简单。

    我还要指出,(比如说)一个有 10 个用户快速发布然后更改它的开源项目,与像谷歌或微软这样的公司为全局开发者社区这样做之间存在相当大的维护差异。大公司的内部 API(您无法轻松修复整个代码库)与小公司的内部 API 之间甚至存在很大差异,您可以随时改变世界。

    我对大肆宣传它的惊讶感到有些同情 - 但这表明您还没有经历过改变 API 可能意味着的痛苦。您可能同样感到惊讶 - 甚至更加惊讶 - 一旦一个错误的决定出现在世界上,做出根本性的改变是多么困难。

    (免责声明:我为 Google 工作,但不在 G+ 区域。此答案中的意见是我自己的,不代表 Google。)

    关于api - 当您可以实现版本控制时,为什么开发人员对发布 API 如此珍贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11806636/

    相关文章:

    API - 在 BlueSnap 上更新 Shopper

    api - API 和 SOA 有什么区别

    c - 哪些参数决定处理器数据类型的大小?

    SQLite 和版本控制系统

    android - 使用 phonegap 对不同平台进行版本控制

    android - Android api 中使用的设计模式

    javascript - 检查删除和更新 ui angular ngResource 模块

    spring-boot - 使用 Spring Cloud Config 进行属性版本控制

    architecture - 一起使用 MySQL 和 Neo4j 是个好主意吗?

    go - 应用程序的邮件系统之类的东西是否应该像本例所示那样在单独的 channel 中运行?