12

如果服务器希望客户端等待一点时间然后再次尝试请求,那么服务器发送的最佳 HTTP 响应代码是什么?

现在,我正在使用:

409 Conflict

但这感觉不太对劲……

4

3 回答 3

25

根据您希望他们等待的原因,状态代码会有所不同。以 4 开头的代码表示客户端错误。如果请求正确完成,我不会使用 400 代码。以 5 开头的状态用于服务器错误。如果您因为自己的问题而要求 HTTP 请求者等待,我会选择 503。

我在编写 Web 服务以检查文件是否已完成处理时遇到了这个问题。如果完成了。我返回 200,如果不是,我不想给出错误代码。使用以 2 开头的代码(成功)会更合适。在这种情况下,最好的标准代码可能是“202 Accepted” HTTP 规范将其描述为:

请求已被接受处理,但处理尚未完成。

于 2012-12-31T16:54:48.640 回答
12

您可以按照 HTTP RFC - https://www.rfc-editor.org/rfc/rfc2616#section-10.5.4中的建议使用 503 + "retry-after" 标头。

于 2012-09-16T18:34:34.760 回答
9

假设您正在尝试实施速率限制方案,我想到了两个选项(否则,Alexei 的建议可能更适用)。

429 状态码表示用户在给定时间内发送了太多请求(“速率限制”)。

响应表示应该包含解释条件的详细信息,并且可以包含一个 Retry-After 标头,指示在发出新请求之前要等待多长时间。

  • 420 Enhance Your Calm,非标准,由 Twitter 使用,并包含在此处,因为它的名字让我很开心。

当您受到速率限制时,由版本 1 搜索和趋势 API 返回。

于 2012-09-16T18:37:01.110 回答