2

我是一个纯粹主义者,因此当我的应用程序在保存数据时遇到问题时,我喜欢将正确的 http 状态代码返回给我的用户(其他服务)。

当您可以验证请求或者您知道您的服务器已死时,这很容易。但是当两者都不是时会发生什么?

当一切都好并且我可以保存数据时,我返回 202 Accepted。当我无法保存数据但数据确实正确并且我的服务器运行良好并且是别人的错时我应该返回什么?

特别是今天,我在没有粘性会话的数据库集群上执行 2 个相关查询时发现了一个保存问题。

我不想对我的用户撒谎。我想说“不,我无法保存数据”,但我不想责怪他们(4xx),这绝对不是内部服务器错误。

是否有“我无法执行您的指令”或“出现问题,请重试”的响应?

还是我只是把 500 看得太认真了,而这应该是我使用的那个?

4

2 回答 2

2

这绝对是一个 500 错误,请记住,从客户端的角度来看,您在后台使用的每个子系统或服务都是服务器的一部分。

您可以在响应实体中更详细地解释发生了什么。

来自rfc2616

10.5 Server Error 5xx

   Response status codes beginning with the digit "5" indicate cases in
   which the server is aware that it has erred or is incapable of
   performing the request.
于 2014-09-13T18:41:18.183 回答
0

这取决于具体原因,但 503 Service Unavailable 可能是合适的,回退是通用的 500。维基百科有一个完整的状态代码列表

于 2014-09-13T18:36:37.520 回答