假设我的SemVer API版本是2.0.0
假设我现在有一个端点/foo
错误地总是返回{200, "some message"}
或{500, "some message"}
我修复了一个错误,现在我检测到错误请求,现在我返回{200, "some message"}
或{400, "some message"}
或{500, "some message"}
这被认为是SemVer中的API中断变化吗?用户可能没想到400,所以我可以看到3.0.0
的情况,但是我也可以看到这应该是一个BAD REQUEST一直是400,因为在某种意义上" HTTP& #34;是我的API,因此修补了2.0.1
,所以我被撕裂了。
答案 0 :(得分:0)
我认为在回答这个问题之前,你必须在哲学上确定责任所在。也就是说,如果客户端代码不能处理新的(正确的)状态代码,那么这是否会导致您的更改结果或编写得不好的客户端代码的结果。如果您之前一直在发送一些有用的信息以及您的500
回复,那么期望客户端代码可能依赖它是合理的。
对我来说,这听起来像minor更改的定义:
当你以向后兼容的方式添加功能时,MINOR版本[是] [。 。 ]
仍然可以正确发送实际的内部服务器错误,并且仍能正常发送成功的结果;您所做的只是添加了客户端确定错误发生位置的能力。
修改:我认为这不是2.0.1
或3.0.0
,而是2.1.0
。