如果用户超过API使用限制,将返回什么错误代码?

时间:2013-05-17 00:44:52

标签: api rest

正在考虑的API有两个限制:

  • 每日限制。
  • 并发限制。

如果请求没有排队,应该提供什么HTTP响应代码?

到目前为止,这两个选项似乎是409和503.这就是说,503似乎表明API服务器本身存在问题,而不是用户调用它已经用尽了配额。

3 个答案:

答案 0 :(得分:4)

进一步阅读后,找到429 Too Many Requests(RFC 6585)。

  

429请求过多

     

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

     

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

     

例如:

HTTP/1.1 429 Too Many Requests    Content-Type: text/html   
Retry-After: 3600

    <html>
       <head>
          <title>Too Many Requests</title>
       </head>
       <body>
          <h1>Too Many Requests</h1>
          <p>I only allow 50 requests per hour to this Web site per
             logged in user.  Try again soon.</p>
       </body>    </html>
  

请注意,此规范未定义原始服务器的方式   识别用户,以及它如何计算请求。例如,一个   限制请求率的源服务器可以基于
来执行   整个服务器上每个资源的请求数,   甚至在一组服务器中。同样,它可能识别用户   通过其身份验证凭据或有状态cookie。

     

429状态代码的响应绝不能由缓存存储。

这似乎正是我所寻找的。

感谢您的其他答案。

答案 1 :(得分:2)

我认为没有适当的地位。 Twitter构成420 enhance your calm状态。只要您记录它就没有问题。

在我看来403 Forbidden,即使您指定了原因,RFC也表示请求SHOULD不会重复。这让我想到只要我不修改请求就会被拒绝。

答案 2 :(得分:1)

有几家API供应商与503合作,表明您的价格超出了API使用条款规定的费率限制。

Amazon EC2和各种Google API也在做同样的事情。尝试使用“503速率限制”的谷歌搜索,你会发现很多API。只要您提供详细消息并且您的API文档清楚地提到它,您的API用户就应该没问题。