2013-06-05 120 views
11

我正在寻找一个正确的状态代码,通过api发送一次故障。通用故障的HTTP状态代码

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

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

哪个最好?

我一直在寻找他们,不能看到任何东西完全符合这里的需求。

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

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

您可能需要一个HTTP 400.请参阅http://stackoverflow.com/questions/1959947/whats-an-closed-http-status-code-to-return-by-a-rest-api-service-for -a-val – lreeder

+1

另外,请阅读本IETF草案:http://www.ietf.org/id/draft-nottingham-http-problem-04.txt –

回答

11

如果是服务器错误,那么它应该是500.如果是客户端错误,使用400

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

对于另外两个,它们可能不是错误。可能是客户端发送了正确的请求,但股票已被别人使用,在这种情况下,服务器应该返回409(冲突)。如果从一开始就要求过多的库存,那么它应该是200/202。

如果你只有一个代码,只需使用400和200(见上)。

+0

我已更新示例失败的问题。他们可能适合400更好,但它似乎仍然不正确 –

+0

@MartyWallace我更新了我的答案。 – imel96