问题 通用故障的HTTP状态代码


我正在寻找一个正确的状态代码,通过api发送gneral失败。

确切的情况是无法将产品添加到购物车。

失败可能由于很多原因而发生,但我想返回一个http代码。

哪个最好?

我一直在浏览它们,并且无法在这里看到任何完全符合需求的东西。

一些可能的失败条件可能是:

Not enough stock to satisfy
Stock limit reached for that particular product
Product no longer available

9540
2018-06-05 16:23


起源

您可能需要HTTP 400.请参阅 stackoverflow.com/questions/1959947/... - lreeder
另外,阅读本IETF草案: ietf.org/id/draft-nottingham-http-problem-04.txt - Ivan Zuzak


答案:


如果是服务器错误则应该是500.如果是客户端错误,请使用400。

没有看到URI以及你用它做什么,很难更精确。例如,如果“产品不再可用”是GET请求的结果,那么它应该是404(未找到)。但如果是POST请求,那么它应该是200或202。

对于其他两个,它们可能不是错误。可能是客户端发送了正确的请求但是其他人已经消耗了库存,在这种情况下服务器应该返回409(冲突)。如果请求从一开始就是太多库存,那么它应该只是200/202。

如果您只需要一个代码,只需使用400和200(见上文)。


13
2018-06-05 16:26



我已经用示例失败更新了问题。他们可能更适合400,但它似乎仍然不对 - Marty Wallace
@MartyWallace我更新了我的答案。 - imel96