Semantic Versioning如何定义删除功能但客户端不一定会中断所需的版本更改?
例如,如果我有一个接受排序参数的资源:
/person?sort=name
如果我删除了排序功能,现有客户端仍然可以使用该服务(排序不会被尊重)。 SemVer是否认为这是一个向后不兼容的变化? 如果不是,那么哪条规则专门解决了这种情况?
答案 0 :(得分:3)
从我的角度来看,现有的客户端将会中断 - 他们希望结果集以排序的方式返回,而不会。这意味着很可能某个网页或某个应用程序屏幕会以非排序的方式显示数据,即使用户点击了一个按钮,要求按名称对内容进行排序。即使应用程序没有倒下,客户端的用户体验也会出现负面和意外的变化。因此,你谈论的是一个突破性的变化,因此主要版本的增加。
如果您完全确定没有客户使用 API元素,那么它可能是另一回事 - 例如如果您在一个封闭的世界中工作,您可以检查并验证所有客户端,那么您可能会选择假装API元素从不存在,只考虑更改次要或补丁更改。但99%的时间它应该是一个版本增加,即使在封闭世界的情况下,我认为这将是一种极端的方法,只有在某些情况下是合理的。