Quando um cliente excede o limite associado à ele, as requisições seguintes são bloqueadas.
O servidor pode responder com informações sobre os limites utilizados e o tempo de espera necessário para enviar uma nova requisição.
Essas informações são anexadas aos cabeçalhos da resposta(headers).
Header | Exemplo | Descrição |
---|---|---|
ratelimit-limit | 60 | O limite de requisições para o cliente. |
ratelimit-name | throttle_authenticated_web | Nome do throttle utilizado. |
ratelimit-remaining | 0 | Número de requisições disponíveis. |
ratelimit-reset | 1609844400 | Unix time - quando a contagem será reiniciada. |
retry-after | 30 | Tempo em segundos até a contagem ser reiniciada. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After. |
Existem dois tipos de limites de requisições na API da Kobana, os limites de requisições GET
e POST
.
Em ambos os casos a contagem é feita por hora para o Token de Acesso usado na autenticação.
Cada Token de Acesso pode realizar no máximo:
60 requisições hora GET
1000 requisições hora POST
O número de requisições feitas pelo usuário é zerada no primeiro minuto de cada hora.
A cada requisição realizada, o servidor retorna os cabeçalhos ratelimit-limit
e ratelimit-remaining
com o número de requisições permitidas e o número de requisições restantes para aquela hora.
Exemplo de Resposta em caso de sucesso
Date: Fri, 05 Nov 2010 12:00:00 GMT
Content-Type: application/json; charset=utf-8
ratelimit-limit: 1000
ratelimit-remaining: 486
Caso atinja o número máximo de requisições dentro de uma hora, o servidor retorna o status HTTP 429 Too Many Requests
.
Neste caso, você deve esperar o número de segundos retornado no header retry-after
antes de realizar a próxima requisição.
Exemplo de Resposta em caso de bloqueio:
HTTP/1.1 429 Too Many Requests
Date: Fri, 05 Nov 2010 12:00:00 GMT
Content-Type: application/json; charset=utf-8
ratelimit-limit: 1000
ratelimit-remaining: 0
ratelimit-reset: 3600
ratelimit-name: throttle_authenticated_web
retry-after: 3600
...
{error: "Limite de requisições POST por hora excedido para esse usuário."}
Referências:
https://ietf-wg-httpapi.github.io/ratelimit-headers/draft-ietf-httpapi-ratelimit-headers.html