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

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

The server cannot or will not process the request due to something
that is perceived to be a client error (e.g., malformed request
syntax, invalid request message framing, or deceptive request
routing).

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

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

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

资源:A nice blog

点赞