Какой код статуса я должен установить для UPDATE
( PUT
) и DELETE
(например, продукт успешно обновлен)?
Какой код статуса я должен установить для UPDATE
( PUT
) и DELETE
(например, продукт успешно обновлен)?
Ответы:
Для запроса PUT : HTTP 200 или HTTP 204 должны означать «ресурс обновлен успешно».
Для запроса DELETE : HTTP 200 или HTTP 204 должны означать «ресурс успешно удален». HTTP 202 также может быть возвращен, что будет означать, что инструкция была принята сервером и «ресурс был помечен для удаления».
Если существующий ресурс изменен, то должны быть отправлены либо коды ответа 200 (ОК), либо 204 (Нет содержимого)>, чтобы указать успешное завершение запроса.
Успешный ответ ДОЛЖЕН быть 200 (ОК), если ответ включает в себя объект, описывающий состояние, 202 (Принят), если действие еще не было выполнено, или 204 (Нет содержимого), если действие было выполнено, но ответ не включает сущность.
Источник: W3.org: HTTP / 1.1 Определения методов
HTTP 200 OK: стандартный ответ для успешных запросов HTTP. Фактический ответ будет зависеть от используемого метода запроса.
HTTP 204 Нет содержимого: сервер успешно обработал запрос, но не возвращает никакого содержимого
Источник: список кодов состояния HTTP: 2xx Success
Краткий ответ: для PUT и DELETE вы должны отправить либо 200 (OK), либо 204 (No Content).
Длинный ответ: вот полная схема решения (нажмите, чтобы увеличить).
Вот несколько советов:
УДАЛЯТЬ
200 (если вы хотите отправить некоторые дополнительные данные в ответе) или 204 (рекомендуется).
202 Операция удалена, еще не было совершено.
Если нечего удалять, используйте 204 или 404 (операция УДАЛИТЬ идемпотентна, удаление уже удаленного элемента - операция успешна , поэтому вы можете вернуть 204 , но это правда, что идемпотент не обязательно подразумевает тот же ответ)
Другие ошибки:
- 400 Bad Request (неправильный синтаксис или неверный запрос странный, но возможный).
- 401 Ошибка неавторизованной аутентификации
- 403 Запрещено : ошибка авторизации или неверный идентификатор приложения.
- 405 Не разрешено . Конечно.
- 409 Конфликт ресурсов возможен в сложных системах.
- И 501 , 502 в случае ошибок.
ПОЛОЖИЛ
Если вы обновляете элемент коллекции
- 200/204 по тем же причинам, что и УДАЛИТЬ выше.
- 202, если операция еще не была совершена.
Указанный элемент не существует:
- PUT может быть 201 (если вы создали элемент, потому что это ваше поведение)
404 Если вы не хотите создавать элементы через PUT.
400 Bad Request (неправильный синтаксис или неправильный запрос, более распространенный, чем в случае DELETE).
- 401 Несанкционированный
- 403 Запрещено : ошибка аутентификации или неверный идентификатор приложения.
- 405 Не разрешено . Конечно.
- 409 Конфликт ресурсов возможен в сложных системах, например, в DELETE.
- 422 Непроцессируемый объект Помогает различить «неверный запрос» (например, неверный XML / JSON) и недопустимые значения полей
- И 501 , 502 в случае ошибок.
RFC 2616 описывает, какие коды состояния использовать .
И нет, это не всегда 200.
В дополнение к 200 и 204, 205 (Reset Content) может быть действительным ответом.
Сервер выполнил запрос, и пользовательскому агенту СЛЕДУЕТ сбросить представление документа, из-за которого был отправлен запрос ... [например] очистка формы, в которой вводятся данные.
Поскольку возникает вопрос, должен ли DELETE возвращать 200 против 204, стоит учесть, что некоторые люди рекомендуют возвращать объект со ссылками, поэтому предпочтение отдается 200 .
«Вместо того, чтобы возвращать 204 (без содержимого), API должен быть полезным и предлагать места, куда можно пойти. В этом примере я думаю, что одна очевидная ссылка, которую нужно предоставить, - это« куда-то.com/container/ »(минус« ресурс ») - контейнер, из которого клиент только что удалил ресурс. Возможно, клиент захочет удалить больше ресурсов, так что это будет полезной ссылкой ».
http://blog.ploeh.dk/2013/04/30/rest-lesson-learned-avoid-204-responses/
Если клиент встречает ответ 204, он может либо сдаться, либо перейти к точке входа API, либо вернуться к предыдущему ресурсу, который он посетил. Ни один из вариантов не особенно хорош.
Лично я бы не сказал, что 204 неправильно (как и автор, он говорит «раздражает»), потому что хорошее кэширование на стороне клиента имеет много преимуществ. Лучше всего быть последовательным в любом случае.
Вот код состояния, который вы должны знать для своих знаний.
- 100 Продолжить
- 101 протокол переключения
- 102 Обработка
- 103 ранних намеков
- 200 ОК
- 201 Создано
- 202 Принято
- 203 Неофициальная информация
- 204 Нет содержимого
- 205 Сбросить содержимое
- 206 Частичное содержание
- 207 мульти-статус
- 208 уже сообщили
- 226 IM Используется
- 300 множественных вариантов
- 301 перемещено навсегда
- 302 найдено
- 303 См. Другое
- 304 Не модифицировано
- 305 Использовать прокси
- 306 Switch Proxy
- 307 Временный редирект
- 308 постоянный редирект
- 400 плохих запросов
- 401 Несанкционированный
- 402 Требуется оплата
- 403 Запрещено
- 404 не найден
- 405 метод не разрешен
- 406 неприемлемо
- 407 Proxy Authentication Required
- 408 Время ожидания запроса
- 409 конфликт
- 410 ушел
- 411 длина требуется
- 412 Не выполнено предварительное условие
- 413 Слишком большая нагрузка
- 414 URI слишком длинный
- 415 неподдерживаемый тип носителя
- 416 Неудовлетворительный диапазон
- 417 Ожидание не удалось
- 418 я чайник
- 420 Ошибка метода
- 421 неправильный запрос
- 422 необработанного объекта
- 423 заблокирован
- 424 Неудачная зависимость
- 426 Требуется обновление
- 428 Требуется предварительное условие
- 429 слишком много запросов
- 431 слишком большие поля заголовка запроса
- 451 недоступен по юридическим причинам
- 500 Внутренняя ошибка сервера
- 501 не реализовано
- 502 Bad Gateway
- 503 Сервис недоступен
- Тайм-аут шлюза 504
- Http-версия 505 не поддерживается
- 506 Varient Также ведутся переговоры
- 507 Недостаточно памяти
- 508 петля обнаружена
- 510 не продлен
- 511 Требуется сетевая аутентификация
Когда ресурс изменяется, код ответа должен быть 200 («ОК») . Если состояние ресурса изменяется таким образом, что URI изменяется на ресурс (например, учетная запись пользователя переименовывается), код ответа - 301 («Перемещено постоянно»), а заголовок Location должен предоставлять новый URI.
Когда объект удаляется, код ответа должен быть 200 («ОК»).
Перейдите по ссылке ниже для получения более подробной информации - код состояния для отдыха