2010-03-30 18 views
9

Desidero limitare i client al limite superiore del numero di chiamate alle API REST. Cosa devo restituire per informare i clienti che sono stati limitati?Come limitare i client in un'API REST

Amazon S3 sta restituendo HTTP 503 con un codice di errore SlowDown per informare i clienti.

Che cosa consigliate?

risposta

9

Dal RFC 2616 atti di stato 503 come (il corsivo è mio):

il server non è attualmente in grado di gestire la richiesta a causa di una temporanea sovraccarico o la manutenzione del server . L'implicazione è che questo è una condizione temporanea che sarà alleviata dopo un certo ritardo. Se noto, la lunghezza del ritardo può essere indicata in un'intestazione Riprova dopo.

sembra un approccio ragionevole, specialmente con un'intestazione Retry-After.

+0

Oltre a HTTP 503, è possibile utilizzare anche HTTP 421: ci sono troppe connessioni dal proprio indirizzo Internet. (Ma il mio preferito è HTTP 418 - Sono una teiera. :-)) –

+0

Twitter sta restituendo un HTTP non standard 420 –

+1

RFC 2616 non definisce nessuno di questi 4xx e dice "La classe 4xx del codice di stato è intesa per i casi in che il cliente sembra aver commesso un errore ", che sembra inappropriato qui, in cui il client non ha fatto nulla di sbagliato ed è il _server_ che è sovraccarico. –

Problemi correlati