Jeden z dodatkowych kodów stanu HTTP ( RFC6585 ) to
Gdzie mogę znaleźć przykłady nagłówków odpowiedzi HTTP z ograniczeniem szybkości przesyłania danych przez interfejs API HTTP / REST, które są przydatne w przypadku tego stanu odpowiedzi HTTP?
Jeden z dodatkowych kodów stanu HTTP ( RFC6585 ) to
Gdzie mogę znaleźć przykłady nagłówków odpowiedzi HTTP z ograniczeniem szybkości przesyłania danych przez interfejs API HTTP / REST, które są przydatne w przypadku tego stanu odpowiedzi HTTP?
Odpowiedzi:
Oto kilka przykładów nagłówków odpowiedzi HTTP ograniczających prędkość interfejsu API. Zaczerpnięte z czterech popularnych interfejsów API REST: Github, Vimeo, Twitter i 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 |
+-----------------------------+---------------------------------------------+
Uwaga: Twitter używa nagłówków o podobnych nazwach, takich jak Vimeo, ale ma inny myślnik w każdej nazwie.
#=============================#=============================================#
# 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
pakietem: github.com/webjay/x-rate
Oprócz nagłówków specyficznych dla API, nie zapomnij o skromnym, standardowym Retry-After
nagłówku
Serwery wysyłają pole nagłówka „Ponów próbę po”, aby wskazać, jak długo klient użytkownika powinien czekać przed wysłaniem kolejnego żądania ... Wartość tego pola może być datą HTTP lub liczbą sekund opóźnienia po otrzymaniu odpowiedzi.
Norma zawiera szczegółowe zalecenia dodatkowe w przypadku używania go z kodem stanu 503 lub 3xx:
W przypadku wysłania z odpowiedzią 503 (Usługa niedostępna) Ponów próbę po wskazuje, jak długo usługa ma być niedostępna dla klienta. W przypadku wysłania z jakąkolwiek odpowiedzią 3xx (przekierowanie) Retry-After wskazuje minimalny czas oczekiwania przez agenta użytkownika przed wysłaniem przekierowanego żądania.
Retry-After
jest przeznaczony do użycia z 503
lub 30x
responses tools.ietf.org/html/rfc7231#section-7.1.3
response.headers["x-ratelimit-limit"]