正在考虑的API有两个限制:
如果请求没有排队,应该提供什么HTTP响应代码?
到目前为止,这两个选项似乎是409和503.这就是说,503似乎表明API服务器本身存在问题,而不是用户调用它已经用尽了配额。
答案 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状态代码的响应绝不能由缓存存储。
这似乎正是我所寻找的。 p>
感谢您的其他答案。
答案 1 :(得分:2)
我认为没有适当的地位。 Twitter构成420 enhance your calm
状态。只要您记录它就没有问题。
在我看来403 Forbidden
,即使您指定了原因,RFC也表示请求SHOULD
不会重复。这让我想到只要我不修改请求就会被拒绝。
答案 2 :(得分:1)
有几家API供应商与503合作,表明您的价格超出了API使用条款规定的费率限制。
Amazon EC2和各种Google API也在做同样的事情。尝试使用“503速率限制”的谷歌搜索,你会发现很多API。只要您提供详细消息并且您的API文档清楚地提到它,您的API用户就应该没问题。