2010-03-30 5 views
9

Я хочу ограничить клиентов верхним пределом количества вызовов для моих REST API. Что я должен вернуть, чтобы сообщить клиентам, что они были дросселированы?Как дросселировать клиентов в REST API

Amazon S3 возвращает HTTP 503 с кодом ошибки SlowDown для информирования клиентов.

Что вы посоветуете?

ответ

9

С RFC 2616 документы статуса 503 как (курсив мой):

Сервер в настоящее время не в состоянии обработать запрос из-за временной перегрузки или обслуживания сервера . Подразумевается, что это является временным условием, которое будет уменьшено после некоторой задержки. Если известно, длина задержки МОЖЕТ быть , указанной в заголовке Retry-After.

это кажется разумным подходом, особенно сRetry-After заголовка.

+0

Помимо HTTP 503, вы также можете использовать HTTP 421. С вашего интернет-адреса слишком много подключений. (Но мой личный фаворит - HTTP 418 - я чайник. :-)) –

+0

Twitter возвращает нестандартный HTTP 420 –

+1

RFC 2616 не определяет ни один из этих 4xx и не говорит: «Класс кода 4xx статуса предназначен для случаев в который, по-видимому, клиент ошибался », что кажется неуместным здесь, когда клиент не сделал ничего плохого и перегружен _server_. –