Limite de Requisições

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).

HeaderExemploDescrição
ratelimit-limit60O limite de requisições para o cliente.
ratelimit-namethrottle_authenticated_webNome do throttle utilizado.
ratelimit-remaining0Número de requisições disponíveis.
ratelimit-reset1609844400Unix time - quando a contagem será reiniciada.
retry-after30Tempo 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