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