HTTP Restful 语义版本控制

Posted

技术标签:

【中文标题】HTTP Restful 语义版本控制【英文标题】:HTTP Restful Semantic Versioning 【发布时间】:2020-03-27 21:52:12 【问题描述】:

目前,我对 API 使用语义版本控制。

版本控制是这样的:

进行不兼容的 API 更改时的主要版本

以向后兼容的方式添加功能时的次要版本

进行向后兼容的错误修复时的 PATCH 版本

如果我只更新文档(swagger、内部文档、YAML 等)以添加示例,或者更正附加到 API 的说明,是否应该增加 PATCH?

感谢您的帮助;)

【问题讨论】:

【参考方案1】:

如果我只更新文档(swagger、内部文档、YAML 等)以添加示例,或者更正附加到 API 的说明,我应该增加 PATCH 吗?

取决于示例/更正。它是否代表了与之前对 API 使用的理解的突破?这是一个非常人为的讨论示例:

API:int plus(int a, int b)

文档:int plus(int a, int b) sums a + b.

上面是作为1.0.0发布的,然后有人查看代码并指出溢出时,函数返回0。

更新的文档:int plus(int a, int b) sums a + b where a < 32767 and b < 32767, otherwise, returns 0.

因此,这是否是一项重大更改,取决于 a + b 溢出时的语言及其行为。有些语言会抛出异常或段错误,而另一些语言通常会简单地返回某种模数结果。假设它是 C,在这种情况下,此文档更改可能是一个重大更改(嗯,实际上可能是大多数编程语言)。

这里的重点是,最初的文档通常并不比 API 本身的表面重述好多少。当客户对结果感到惊讶时,来自客户的后续投诉(错误报告)通常会推动下一轮文档更改。所以是的,即使开发人员的初衷没有改变,但文档确实代表了对预期结果的重大改变。

如果更改了文档以完全符合客户在使用中的期望/见证,那么不,这不是重大更改。

文档是功能集的一部分。回填缺少的文档通常是一个特性添加,所以你会碰到次要版本。一个小的修正将是一个补丁。

【讨论】:

以上是关于HTTP Restful 语义版本控制的主要内容,如果未能解决你的问题,请参考以下文章

Java Web学习总结(43)—— Restful API 版本控制

Java Web学习总结(43)—— Restful API 版本控制

代码的自动语义版本控制

语义版本控制在啥版本下进行版本化?

CI 如何影响语义版本控制?

Restful API 如何进行版本控制 ? 这4种方法你要掌握!