服务器端处理限制的 HTTP 状态代码
HTTP Status code for the server side processing limitation
当服务器由于数据库中存在大量记录而无法处理响应时,什么是正确的 HTTP 状态代码(可能是由于记录大小过大并且需要花费太多时间来处理)处理它)作为用户发送的请求的一部分?我们想告诉客户记录太多了。在这种情况下,请求在语义上是正确的,但是由于服务器处理能力限制无法处理它,我们必须给出错误响应。
例如,假设客户试图在最长允许的 5 年期限内生成过去 3 年的所有交易。但由于客户端在 3 年内完成了更多交易,服务器希望与客户端通信以进一步缩短持续时间。原因是服务器端的硬件资源有限,无法处理如此庞大的记录。
它不应该归类在 4xx 错误下,因为它不是客户端的问题,对吧?如果是,为此设置的最佳 5xx STATUS 代码是什么?
首先让我们决定它应该是4xx还是5xx代码。虽然最初的问题确实不在客户端,但客户端应该更改请求以使其成功。所以它需要是 4xx.
当然,如果这只是您未预料到的服务器错误 - 它必须是 500 Internal Server Error。但是你决定忍受这个缺陷,所以现在它是你合同的一部分。并且客户需要知道,如果发生此类错误 - 需要请求更短的期限。
在您的情况下,由于语法正确,422 Unprocessable Entity 可能是最佳选择。它仍然有点偏离,因为当客户端发送一个逻辑上没有意义的实体时应该使用 422,但它是那里存在的最接近的代码。您始终可以在响应正文中包含更多详细信息。
注意:这是一个 WebDAV 扩展代码,而不是原始的 HTTP 代码。如果你想使用纯 HTTP,我会使用 400 并将原因放在正文中,以便客户端可以解析它。我认为纯 HTTP 没有什么合适的。
当服务器由于数据库中存在大量记录而无法处理响应时,什么是正确的 HTTP 状态代码(可能是由于记录大小过大并且需要花费太多时间来处理)处理它)作为用户发送的请求的一部分?我们想告诉客户记录太多了。在这种情况下,请求在语义上是正确的,但是由于服务器处理能力限制无法处理它,我们必须给出错误响应。
例如,假设客户试图在最长允许的 5 年期限内生成过去 3 年的所有交易。但由于客户端在 3 年内完成了更多交易,服务器希望与客户端通信以进一步缩短持续时间。原因是服务器端的硬件资源有限,无法处理如此庞大的记录。
它不应该归类在 4xx 错误下,因为它不是客户端的问题,对吧?如果是,为此设置的最佳 5xx STATUS 代码是什么?
首先让我们决定它应该是4xx还是5xx代码。虽然最初的问题确实不在客户端,但客户端应该更改请求以使其成功。所以它需要是 4xx.
当然,如果这只是您未预料到的服务器错误 - 它必须是 500 Internal Server Error。但是你决定忍受这个缺陷,所以现在它是你合同的一部分。并且客户需要知道,如果发生此类错误 - 需要请求更短的期限。
在您的情况下,由于语法正确,422 Unprocessable Entity 可能是最佳选择。它仍然有点偏离,因为当客户端发送一个逻辑上没有意义的实体时应该使用 422,但它是那里存在的最接近的代码。您始终可以在响应正文中包含更多详细信息。
注意:这是一个 WebDAV 扩展代码,而不是原始的 HTTP 代码。如果你想使用纯 HTTP,我会使用 400 并将原因放在正文中,以便客户端可以解析它。我认为纯 HTTP 没有什么合适的。