Estou montando uma especificação para um serviço REST, parte do qual incorporará a capacidade de limitar os usuários em todo o serviço e em grupos de recursos ou em recursos individuais. Igualmente, os tempos limites para estes seriam configuráveis por recurso / grupo / serviço.
Estou apenas olhando as especificações do HTTP 1.1 e tentando decidir como vou me comunicar com um cliente que uma solicitação não será atendida porque eles atingiram seu limite.
Inicialmente, imaginei que o código do cliente 403 - Forbidden
era o único, mas este, da especificação:
A autorização não ajudará e o pedido NÃO DEVE ser repetido
me incomodou.
Na verdade, parece que 503 - Service Unavailable
é melhor usar - já que permite a comunicação de um tempo de nova tentativa através do uso do Retry-After
cabeçalho.
É possível que no futuro eu possa procurar 'comprar' mais solicitações via eCommerce (nesse caso, seria bom se o código do cliente 402 - Payment Required
tivesse sido finalizado!) - mas acho que isso também poderia ser espremido em uma resposta 503 também.
Qual você acha que devo usar? Ou existe outro que eu não considerei?