由于业务异常导致的错误响应的Http状态。语法是正确的,请求有意义

时间:2015-05-22 08:32:23

标签: rest http http-status-codes

关于正确的响应状态有很多问题,但我无法理解我应该将哪种状态用于正常的业务异常。我已经阅读了400的定义,在我看来,它似乎是因为沟通中的错误。

  

由于某些原因,服务器无法或不会处理请求   被认为是客户端错误(例如,格式错误的请求)   语法,无效请求消息框架或欺骗性请求   路由)。

让我们说客户想确认一些操作。他向我发送了绝对正确,有效的请求,我理解和处理。但确认码不正确。所以这是一个错误,但这个错误是正常的和预期的,我们的沟通是正确的。或者另一个例子:客户希望从账户中提取一些钱。同样,请求是正确且有效的,但帐户没有足够的钱。我现在要使用 400 ,但 400 在我看来是客户端和服务器之间的通信错误,而不是应用程序逻辑中的错误。也许这种错误有更合适的状态?你用什么?

1 个答案:

答案 0 :(得分:2)

您可以在这些情况下使用HTTP 422(不可处理的实体)。我更喜欢这个规则来选择http状态代码:

  • 成功请求处理时的HTTP 200,201,204
  • 请求违反某些业务规则时的HTTP 422
  • 处理请求时发生意外异常的HTTP 500

资源:A nice blog