休息错误代码/成功代码

时间:2015-12-18 05:34:07

标签: java rest http jersey

我正在使用泽西的REST项目。成功后,我将返回200个代码以及特定请求的json响应。我知道可能有不同的错误代码分类,例如以500开头的服务器错误,以400开头的客户端错误等等。我的问题是假设我们在数据库中减去某些值,例如count,例如数据库中的count是5和请求减去3,它是有效的,我将发送请求,但我的业务规则规定计数不能小于零,所以如果请求来6,我不能减去那,所以在这种情况下,我应该实际发送状态代码为200并发送错误信息是json respose {" errorCode" :" 1"," errorMessage":""}所以我应该发送不同的HTTP状态代码,如5 ##,有服务器问题或4 ##说错误的请求。

任何人都可以建议我好(在某种意义上是安静的并遵循所有标准)在github上的REST项目,我可以参考。

3 个答案:

答案 0 :(得分:1)

在您提到的特定用例中,您应该返回400作为状态代码(错误请求)。 json中的errorCode是您的业务域,因此您可以使用您想要的内容(另请参阅JSend标准,以便在响应https://labs.omniti.com/labs/jsend中发送http“错误状态”)

答案 1 :(得分:1)

你完全正确:你应该发送一个HTTP" 400"对于客户端错误," 500"服务器错误等;以及特定的错误消息。

您可能需要或不需要更精细的HTTP状态代码(例如," 403"用于客户端身份验证失败,否则" 400"用于其他与客户端相关的错误)。

您可以使用两个好的列表作为指导:

注:

没有"标准"本身。我上面给出的两个链接很有用"例子"。 "官方"用于HTTP 1.1的IETF RFC错误代码是RFC 2616:

答案 2 :(得分:1)

如果在请求处理期间发生任何错误,则不应发送2XX状态代码。为什么?因为2XX表示在这种特殊情况下没有发生的成功处理。

当您发送要从DB中的另一个值中减去的值并且假设结果不能低于0时,您应该回复409 Conflict HTTP状态代码并在响应正文中说明,例如:

由于结果值低于0,因此无法完成请求。

如果400 Bad Request,则为null,例如被发送而不是数字。