Одним з додаткових кодів статусу HTTP ( RFC6585 ) є
Де я можу знайти приклади заголовків відповіді HTTP / REST API, що обмежують швидкість, які корисні для цього стану відповіді HTTP?
Одним з додаткових кодів статусу HTTP ( RFC6585 ) є
Де я можу знайти приклади заголовків відповіді HTTP / REST API, що обмежують швидкість, які корисні для цього стану відповіді HTTP?
Відповіді:
Ось кілька прикладів заголовків відповіді на обмеження швидкості API HTTP. Взято з чотирьох поширених REST API: Github, Vimeo, Twitter та Imgur:
#=============================#=============================================#
# HTTP Header # Description #
#=============================#=============================================#
| X-RateLimit-Limit | Request limit per hour |
+-----------------------------+---------------------------------------------+
| X-RateLimit-Remaining | The number of requests left for the time |
| | window |
+-----------------------------+---------------------------------------------+
#=============================#=============================================#
# 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 використовує заголовки з подібними іменами, як 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 |
+-----------------------------+---------------------------------------------+
#=============================#=============================================#
# 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 |
+-----------------------------+---------------------------------------------+
request
пакетом: github.com/webjay/x-rate
Окрім специфічних заголовків API, не забувайте і покірливий, стандартний Retry-After
заголовок
Сервери надсилають поле заголовка "Повторити спробу", щоб вказати, скільки часу слід чекати користувачеві агенту перед подальшим запитом .... Значення цього поля може бути як дата HTTP, так і кількість секунд для затримки після отримання відповіді.
Стандарт дає конкретні додаткові рекомендації при його використанні з кодом стану 503 або 3xx:
Коли надсилається відповідь 503 (Служба недоступна), Повторна спроба вказує, як довго служба буде недоступною для клієнта. При надсиланні з будь-якою відповіддю 3xx (перенаправлення), Retry-After вказує мінімальний час, протягом якого користувацькому агенту пропонується зачекати перед тим, як подати перенаправлений запит.
Retry-After
призначений для використання з 503
або 30x
відповіді tools.ietf.org/html/rfc7231#section-7.1.3
response.headers["x-ratelimit-limit"]