删除的向后兼容功能的 REST 处理

REST Handling of Removed Backwards-compatible Functionality

Semantic Versioning 如何定义删除功能但客户端不一定会中断时所需的版本更改?

例如,如果我有接受排序参数的资源:

/person?sort=name

如果我删除了排序功能,现有的客户仍然可以使用该服务(只是不会接受排序)。 SemVer 是否认为这是向后不兼容的更改? 如果不是,具体针对这种情况的规则是什么?

从我的角度来看,现有客户会崩溃 - 他们希望结果集以排序的方式返回,但事实并非如此。这意味着,很可能某些网页或 app-screen 某个地方会以 non-sorted 的方式显示数据,即使用户单击了一个按钮要求按名称对内容进行排序。客户的用户体验发生了负面和意外的变化,即使应用程序没有崩溃。因此,您谈论的是 breaking-change 以及主要版本的增加。

如果您可以绝对确定没有客户 使用 API 元素,那么它 可能 是另一回事 -例如如果你在一个封闭的世界里工作,在那里你可以检查和验证你所有的客户,那么你可能会选择假装 API 元素不存在并且只认为变化是次要的或补丁改动。但 99% 的时间应该是版本增加,即使在 closed-world 情况下,我认为这将是一种极端的方法,只有在某些情况下才是合理的。