正在考虑的 API 有两个限制:
如果请求未排队,则应提供什么 HTTP 响应代码?
到目前为止,这两个选项似乎是 409 和 503。也就是说,503 似乎表明 API 服务器本身存在问题,而不是调用它的用户已耗尽配额。
进一步阅读后发现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>
Run Code Online (Sandbox Code Playgroud)
请注意,此规范没有定义源服务器如何识别用户,也没有定义它如何计算请求。例如,
限制请求速率的源服务器可以基于
每个资源、整个服务器甚至一组服务器的请求计数来限制请求速率。同样,它可能通过身份验证凭据或有状态 cookie 来识别用户。带有 429 状态代码的响应不得由缓存存储。
这似乎正是我一直在寻找的东西。
谢谢您的其他答案。
| 归档时间: |
|
| 查看次数: |
1607 次 |
| 最近记录: |