Один из дополнительных кодов состояния HTTP ( RFC6585 ):
Где я могу найти примеры заголовков HTTP-ответа HTTP / REST API с ограничением скорости, которые полезны с этим статусом HTTP-ответа?
Один из дополнительных кодов состояния HTTP ( RFC6585 ):
Где я могу найти примеры заголовков HTTP-ответа HTTP / REST API с ограничением скорости, которые полезны с этим статусом HTTP-ответа?
Ответы:
Вот несколько примеров заголовков HTTP-ответа с ограничением скорости HTTP API. Взято из четырех распространенных API REST: 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 |
+-----------------------------+---------------------------------------------+
В дополнение к заголовкам, специфичным для API, не забывайте скромный стандартный Retry-After
заголовок.
Серверы отправляют поле заголовка "Retry-After", чтобы указать, как долго пользовательский агент должен ждать перед выполнением последующего запроса .... Значение этого поля может быть либо HTTP-датой, либо количеством секунд для задержки после получения ответа.
Стандарт дает определенные дополнительные рекомендации при использовании его с кодом состояния 503 или 3xx:
При отправке с ответом 503 (служба недоступна) Retry-After указывает, как долго служба будет недоступна для клиента. При отправке с любым ответом 3xx (перенаправление) Retry-After указывает минимальное время, в течение которого пользовательский агент должен ждать перед отправкой перенаправленного запроса.
Retry-After
предназначен для использования с инструментами503
или 30x
ответов tools.ietf.org/html/rfc7231#section-7.1.3
response.headers["x-ratelimit-limit"]