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?
fonte
Até certo ponto, você é livre para fazer o que quiser com os códigos, mas eu concordo que você pode usar
503
, ou se quiser402
, sem que ninguém possa reclamar que está quebrando coisas.Editar: um purista pode dizer que você deve começar com 503 e depois mudar assim que for possível fazer pagamentos.
Um excelente complemento para isso nos comentários:
fonte