semantic-versioning - HTTP Restful 语义版本控制
问题描述
目前,我对 API 使用语义版本控制。
版本控制是这样的:
进行不兼容的 API 更改时的主要版本
以向后兼容的方式添加功能时的次要版本
进行向后兼容的错误修复时的 PATCH 版本
如果我只更新文档(swagger、内部文档、YAML、...)以添加示例,或者更正附加到 API 的描述,我应该增加 PATCH 吗?
谢谢你的帮助 ;)
解决方案
如果我只更新文档(swagger、内部文档、YAML、...)以添加示例,或者更正附加到 API 的描述,我应该增加 PATCH 吗?
取决于示例/更正。它是否代表了与之前对 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 本身的表面重述好多少。当客户对结果感到惊讶时,来自客户的后续投诉(错误报告)通常会推动下一轮文档更改。所以是的,即使开发人员的初衷没有改变,文档确实代表了对预期结果的重大改变。
如果更改了文档以完全匹配客户在使用中所期望/见证的内容,那么不,这不是一个重大变化。
文档是功能集的一部分。回填缺少的文档通常是一个特性添加,所以你会碰到次要版本。一个小的修正将是一个补丁。
推荐阅读
- php - 如何使用存储库自定义 EntityType 的数据
- mysql - 在 MYSQL 中更新表时,得到错误代码:1644
- node.js - metalsmith-in-place 给出模板渲染错误:(未知路径)
- javascript - React 组件的 Jest 测试
- java - POJO之间的SonarQube中的重复块
- javascript - 在owl-carousell的幻灯片上添加自定义out动画
- reactjs - Typescript + VS Code:找不到模块“myimage.png”
- python - 无效的文件路径或缓冲区对象类型:
尝试循环文件时 - javascript - 无法读取未定义的属性 - RENDER(输入)
- vim - .vimviews 文件夹是什么?删除它是否安全?