HTTP API限速的示例 - HTTP响应头部分

98

另一个RFC6585中的附加HTTP状态码是

在这种HTTP响应状态下,我在哪里可以找到与HTTP / REST API速率限制HTTP响应头有关的示例?


1
此外,使用这些头文件的方式也不同。response.headers["x-ratelimit-limit"] - Manish
2个回答

153

以下是一些HTTP API限速HTTP响应头的示例,取自四个常见的REST API:Github、Vimeo、Twitter和Imgur:

Github限速http://developer.github.com/v3/#rate-limiting

#=============================#=============================================#
# HTTP Header                 # Description                                 #
#=============================#=============================================#
| X-RateLimit-Limit           | Request limit per hour                      |
+-----------------------------+---------------------------------------------+
| X-RateLimit-Remaining       | The number of requests left for the time    |
|                             | window                                      |
+-----------------------------+---------------------------------------------+

Vimeo API速率限制 http://developer.vimeo.com/guidelines/rate-limiting

#=============================#=============================================#
# HTTP Header                 # Description                                 #
#=============================#=============================================#
| X-RateLimit-Limit           | Request limit per day / per 5 minutes       |
+-----------------------------+---------------------------------------------+
| X-RateLimit-Remaining       | The number of requests left for the time    |
|                             | window                                      |
+-----------------------------+---------------------------------------------+
| X-RateLimit-Reset           | The remaining window before the rate limit  |
|                             | resets in UTC epoch seconds                 |
+-----------------------------+---------------------------------------------+

Twitter REST API 速率限制 https://dev.twitter.com/docs/rate-limiting/1.1

注意: Twitter 使用类似于 Vimeo 的标题,但是每个名称中都有另一个破折号。

#=============================#=============================================#
# HTTP Header                 # Description                                 #
#=============================#=============================================#
| X-Rate-Limit-Limit          | The rate limit ceiling for that given       |
|                             | request                                     |
+-----------------------------+---------------------------------------------+
| X-Rate-Limit-Remaining      | The number of requests left for the         |
|                             | 15 minute window                            |
+-----------------------------+---------------------------------------------+
| X-Rate-Limit-Reset          | The remaining window before the rate limit  |
|                             | resets in UTC epoch seconds                 |
+-----------------------------+---------------------------------------------+

Imgur API 速率限制 http://api.imgur.com/

#=============================#=============================================#
# HTTP Header                 # Description                                 #
#=============================#=============================================#
| X-RateLimit-UserLimit       | Total credits that can be allocated         |
+-----------------------------+---------------------------------------------+
| X-RateLimit-UserRemaining   | Total credits available                     |
+-----------------------------+---------------------------------------------+
| X-RateLimit-UserReset       | Timestamp (unix epoch) for when the credits |
|                             | will be reset                               |
+-----------------------------+---------------------------------------------+
| X-RateLimit-ClientLimit     | Total credits that can be allocated for the |
|                             | application in a day                        |
+-----------------------------+---------------------------------------------+
| X-RateLimit-ClientRemaining | Total credits remaining for the application |
|                             | in a day                                    |
+-----------------------------+---------------------------------------------+

14
如果您正在设计自己的速率限制头,则最佳当前实践BCP178是一个相关的资源,建议放弃使用X-前缀。请查看原始的RFC/BCP以获取更多信息。http://tools.ietf.org/html/bcp178 - 10gistic
很棒的例子,我制作了一个可以与“request”包一起使用的Node.js包:https://github.com/webjay/x-rate - webjay

39

除了API特定的标头之外,不要忘记使用普通的标准的Retry-After标头

服务器发送“Retry-After”头字段以指示用户代理在发起后续请求之前应等待多长时间...... 该字段的值可以是HTTP日期或接收到响应后延迟的秒数。

标准对于将其与503或3xx状态代码一起使用时提出了具体的附加建议:

当使用503(服务不可用)响应发送时,Retry-After表示服务预计将向客户端不可用的时间。 当使用任何3xx(重定向)响应发送时,Retry-After表示要求用户代理在发出重定向请求之前等待的最短时间。


请参见https://dev59.com/e2865IYBdhLWcg3wivKj。 - Raedwald
3
Retry-After 旨在与 50330x 响应一起使用。https://tools.ietf.org/html/rfc7231#section-7.1.3 - Russbear
4
@Russbear 但是该部分没有说明它不能与其他响应代码一起使用。 - Raedwald
29
429太多请求:“响应的表述应包括解释条件的详细信息,可以包括Retry-After头,指示在进行新请求之前需要等待多长时间。” https://tools.ietf.org/html/rfc6585#section-4 - MRA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接