Ví dụ về giới hạn tốc độ API HTTP tiêu đề phản hồi HTTP


82

Một trong những Mã trạng thái HTTP bổ sung ( RFC6585 ) là

Tôi có thể tìm các ví dụ về tiêu đề phản hồi HTTP giới hạn tỷ lệ HTTP / REST API ở đâu hữu ích với trạng thái phản hồi HTTP này?


Ngoài ra, cách sử dụng các tiêu đề này cũng khác. response.headers["x-ratelimit-limit"]
Manish

Câu trả lời:


127

Dưới đây là một số ví dụ về tiêu đề HTTP Giới hạn tốc độ API HTTP. Lấy từ bốn API REST phổ biến: Github, Vimeo, Twitter và Imgur:

Giới hạn tỷ lệ Github http://developer.github.com/v3/#rate-liosystem

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

Giới hạn tỷ lệ Vimeo http://developer.vimeo.com/guidelines/rate-liosystem

#=============================#=============================================#
# 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                 |
+-----------------------------+---------------------------------------------+

Giới hạn tỷ lệ API REST của Twitter https://dev.twitter.com/docs/rate-liosystem/1.1

Lưu ý: Twitter sử dụng các tiêu đề có tên tương tự như Vimeo, nhưng có một dấu gạch ngang khác trong mỗi tên.

#=============================#=============================================#
# 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                 |
+-----------------------------+---------------------------------------------+

Giới hạn tốc độ API Imgur 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                                    |
+-----------------------------+---------------------------------------------+

12
Nếu bạn đang thiết kế tiêu đề giới hạn tỷ lệ của riêng mình, thì Phương pháp Tốt nhất Hiện tại BCP178 là một tài nguyên có liên quan, khuyến nghị rằng tiền tố X không được dùng nữa. Kiểm tra RFC / BCP gốc để biết thêm thông tin. tools.ietf.org/html/bcp178
10gistic

Lớn ví dụ, tôi đã thực hiện một gói Node.js có thể được sử dụng với các requestgói: github.com/webjay/x-rate
webjay

32

Ngoài các tiêu đề cụ thể của API, đừng quên tiêu đề chuẩn , khiêm tốnRetry-After

Máy chủ gửi trường tiêu đề "Thử lại sau" để cho biết tác nhân người dùng phải đợi bao lâu trước khi đưa ra yêu cầu tiếp theo .... Giá trị của trường này có thể là ngày HTTP hoặc số giây để trì hoãn sau khi nhận được phản hồi.

Tiêu chuẩn đưa ra các khuyến nghị bổ sung cụ thể khi sử dụng nó với mã trạng thái 503 hoặc 3xx:

Khi được gửi kèm theo phản hồi 503 (Dịch vụ không khả dụng), Thử lại sau cho biết thời gian dịch vụ dự kiến ​​sẽ không khả dụng cho khách hàng. Khi được gửi với bất kỳ phản hồi 3xx (Chuyển hướng) nào, Thử lại sau cho biết thời gian tối thiểu mà tác nhân người dùng được yêu cầu đợi trước khi đưa ra yêu cầu được chuyển hướng.



2
Retry-Afterdự định sẽ được sử dụng với 503hoặc các công cụ 30xphản hồi.ietf.org/html/rfc7231#section
7.1.3

3
@Russbear nhưng không có gì trong phần đó cho biết nó không thể được sử dụng với các mã phản hồi khác.
Raedwald

20
429 Yêu cầu Quá nhiều: "Các biểu diễn phản hồi NÊN bao gồm các chi tiết giải thích điều kiện và CÓ THỂ bao gồm tiêu đề Thử lại Sau khi cho biết phải đợi bao lâu trước khi đưa ra yêu cầu mới." tools.ietf.org/html/rfc6585#section-4
MRA
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.