“请等一下”的HTTP响应代码

时间:2012-09-16 18:32:05

标签: http rest httpresponse

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

现在,我正在使用:

409 Conflict

但这感觉不太正确......

3 个答案:

答案 0 :(得分:16)

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

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

  

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

答案 1 :(得分:10)

您可以按照HTTP RFC中的建议使用503 +“retry-after”标头 - https://tools.ietf.org/html/rfc2616#section-10.5.4

答案 2 :(得分:7)

假设您正在尝试实施限速方案,请考虑两个选项(否则Alexei's suggestion可能更适用)。

  • 429 Too Many Requests

      

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

         

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

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

      

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