2010-03-30 19 views
9

Quiero limitar a los clientes a un límite superior de número de llamadas a mis API REST. ¿Qué debo devolver para informar a los clientes que han sido acelerados?Cómo acelerar los clientes en una API REST

Amazon S3 está devolviendo HTTP 503 con un código de error SlowDown para informar a los clientes.

¿Qué aconsejas?

Respuesta

9

Desde RFC 2616 documentos de estado 503 como (el subrayado es mío):

el servidor es actualmente incapaz de atender la solicitud debido a una sobrecarga temporal o mantenimiento del servidor . La implicación es que este es una condición temporal que será aliviada después de un retraso. Si se conoce, la duración de la demora PUEDE ser indicada en un encabezado Retry-After.

parece un enfoque razonable, especialmente con una cabecera Retry-After.

+0

Además de HTTP 503, también puede usar HTTP 421 - Hay demasiadas conexiones desde su dirección de Internet. (Pero mi favorito personal es HTTP 418 - Soy una tetera. :-)) –

+0

Twitter devuelve un HTTP 420 –

+1

no estándar RFC 2616 no define ninguno de estos 4xx y dice "El código de estado de la clase 4xx está destinado para casos en que el cliente parece haber errado ", lo que parece inapropiado aquí, donde el cliente no ha hecho nada incorrecto y es el _servidor_ el que está sobrecargado. –