RESTful коды ответа HTTP
Я разрабатываю простой RESTful API и совершенно влюблен в то, насколько он минималистичен. Но я не уверен в правильных кодах ответа HTTP для различных ситуаций:
неправильно сформированный запрос
правильно сформированный запрос относится к ресурсу, который не существует
ресурс успешно удалены
ресурс успешно отредактированы
Я в настоящее время думая, что 1 будет 403 Forbidden
; 2 будет 410 Gone
; 3 и 4 будет 202 Accepted
. Они звучат правильно?
5 ответов
для #1 403 предполагает, что ваше приложение поняло запрос, но не выполнит его (т. е. у текущего пользователя нет разрешения на это по какой-либо причине). Я думаю, что 400 плохих запросов могут иметь больше смысла в этом случае.
для #2-я бы подумал, что 404 будет иметь больше смысла, т. е. ресурс не найден, если ресурс действительно существовал в какой - то момент, а затем был удален, и в этом случае 410 было бы справедливо, но не многие клиенты знают, что делать с 410.
для #3 & #4-200 если вы успешно обработали удаление, 202 если удаление поставлено в очередь и будет обработано позже "вне диапазона".
RFC 2616 предоставляет отличные объяснения того, что означает каждый код ответа в довольно понятных терминах.
1). 400-стандартный плохой запрос, 403 означает, что запрос отформатирован правильно, но вы не можете получить к нему доступ
2). 404 - a 410 означает, что ресурс существовал, но был преднамеренно перемещен
3). и 4). 200 если действие выполнено успешно к моменту отправки ответа, 202 если действие находится в ожидании. На практике 202, вероятно, для удаления действий (где они могут быть предметом рассмотрения), но вы можете или не хотите немедленно вернуться 200 в любом случае, поэтому он кажется фактически удаленным пользователю. Это вопрос дизайна имхо.
получить Ричардсон & Ruby книга - у него есть полезное приложение по вашему вопросу и требуется чтение в любом случае
Почему бы не использовать стандартный коды ответов http . Вы получите все оптимизации ( например, 303, 304 )/ инфраструктура для HTTP бесплатно .