是一个更具体的HTTP代码" Semver打破变更"?

时间:2017-01-20 21:07:22

标签: http semantic-versioning

假设我的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,所以我被撕裂了。

1 个答案:

答案 0 :(得分:0)

我认为在回答这个问题之前,你必须在哲学上确定责任所在。也就是说,如果客户端代码不能处理新的(正确的)状态代码,那么这是否会导致您的更改结果或编写得不好的客户端代码的结果。如果您之前一直在发送一些有用的信息以及您的500回复,那么期望客户端代码可能依赖它是合理的。

对我来说,这听起来像minor更改的定义:

  当你以向后兼容的方式添加功能时,

MINOR版本[是] [。 。 ]

仍然可以正确发送实际的内部服务器错误,并且仍能正常发送成功的结果;您所做的只是添加了客户端确定错误发生位置的能力。

修改:我认为这不是2.0.13.0.0,而是2.1.0