Код статуса HTTP для обновления и удаления? - PullRequest
1179 голосов
/ 26 февраля 2010

Какой код статуса я должен установить для UPDATE (PUT) и DELETE (например, продукт успешно обновлен)?

Ответы [ 9 ]

1828 голосов
/ 26 февраля 2010

Для запроса PUT : HTTP 200 или HTTP 204 должно означать «ресурс обновлен успешно».

Для запроса DELETE : HTTP 200 или HTTP 204 должно означать «ресурс успешно удален». HTTP 202 также может быть возвращено, что будет означать, что инструкция была принята сервером и «ресурс был отмечен для удаления».

9,6 PUT

Если существующий ресурс изменен, то должны быть отправлены коды ответа 200 (ОК) или 204 (Нет содержимого)>, которые должны указывать на успешное завершение запроса.

9,7 УДАЛИТЬ

Успешный ответ ДОЛЖЕН быть 200 (ОК), если ответ включает в себя объект, описывающий статус, 202 (Принят), если действие еще не было принято, или 204 (Нет содержимого), если действие было выполнено, но ответ не включает в себя объект.

Источник: w3.org: определения методов HTTP / 1.1

HTTP 200 OK: Стандартный ответ для успешного HTTP Запросы. Фактический ответ будет зависит от используемого метода запроса.

HTTP 204 Нет содержимого: Сервер успешно обработал запрос, но не возвращает никакого содержимого

Источник: Список кодов состояния HTTP: 2xx Успех

795 голосов
/ 26 февраля 2010

Краткий ответ: для PUT и DELETE вы должны отправить либо 200 (OK), либо 204 (No Content).

Длинный ответ: вот полная схема принятия решения (нажмите, чтобы увеличить).

HTTP 1.1 decision diagram

Источник: https://github.com/for-GET/http-decision-diagram

130 голосов
/ 24 сентября 2013

Вот несколько советов:

DELETE

  • 200 (если вы хотите отправить дополнительные данные в ответе) или 204 (рекомендуется).

  • 202 Операция удалена, еще не было совершено.

  • Если удалить нечего, используйте 204 или 404 (операция УДАЛИТЬ идемпотентна, удалить уже удаленный элемент - операция успешно , поэтому вы можете вернуть 204 , но это правда, что идемпотент не обязательно подразумевает тот же ответ)

Другие ошибки:

  • 400 Плохой запрос (неправильный синтаксис или неверный запрос странный , но возможный).
  • 401 Несанкционированный Ошибка аутентификации
  • 403 Запрещено : ошибка авторизации или неверный идентификатор приложения.
  • 405 Не разрешено . Конечно.
  • 409 Конфликт ресурсов возможен в сложных системах.
  • И 501 , 502 в случае ошибок.

PUT

Если вы обновляете элемент коллекции

  • 200/204 по тем же причинам, что и УДАЛИТЬ выше.
  • 202 , если операция еще не была завершена.

Ссылочный элемент не существует:

  • PUT может быть 201 (если вы создали элемент, потому что это ваше поведение)
  • 404 Если вы не хотите создавать элементы с помощью PUT.

  • 400 Плохой запрос (неправильный синтаксис или неправильный запрос чаще, чем в случае удаления).

  • 401 Несанкционировано
  • 403 Запрещено : сбой аутентификации или неверный идентификатор приложения.
  • 405 Не разрешено . Конечно.
  • 409 Конфликт ресурсов возможен в сложных системах, как в DELETE.
  • 422 Непроцессируемая сущность Помогает различить «неверный запрос» (например, искаженный XML / JSON) и недопустимые значения полей
  • А 501 , 502 в случае ошибок.
13 голосов
/ 26 февраля 2010

RFC 2616 описывает , какие коды состояния использовать .

И нет, это не всегда 200.

9 голосов
/ 09 января 2013

В дополнение к 200 и 204 205 (сброс содержимого) может быть действительным ответом.

Сервер выполнил запрос, и пользовательский агент ДОЛЖЕН сбросить представление документа, из-за которого был отправлен запрос ... [например, очистка формы, в которой вводятся данные.

6 голосов
/ 29 мая 2015

Поскольку вопрос углубляется в вопрос: DELETE"должен" вернуть 200 против 204 , стоит учесть, что некоторые люди рекомендуют возвращать объект со ссылками, поэтому предпочтение отдается 200 .

"Вместо возврата 204 (без содержимого) API должен быть полезным и предложить места, чтобы пойти. В этом примере я думаю, что одна очевидная ссылка на обеспечить это "'where.com / container / '(минус' resource ') " - контейнер, из которого клиент только что удалил ресурс. Возможно, клиент желает удалите больше ресурсов, чтобы это была полезная ссылка. "

http://blog.ploeh.dk/2013/04/30/rest-lesson-learned-avoid-204-responses/

Если клиент встречает ответ 204, он может отказаться, перейдите к точка входа API или вернуться к предыдущему ресурсу посетил. Ни один из вариантов не особенно хорош.

Лично я бы не сказал, что 204 - это неправильно (как и автор, он говорит «раздражает»), потому что хорошее кэширование на стороне клиента имеет много преимуществ. Лучше всего быть последовательным в любом случае.

2 голосов
/ 22 ноября 2016

В июне 2014 года RFC7231 устаревшие RFC2616. Если вы выполняете REST через HTTP, то RFC7231 точно описывает поведение, ожидаемое от GET, PUT, POST и DELETE

0 голосов
/ 05 июля 2019

Вот код состояния, который вы должны знать для своих знаний.

1XX Информационные ответы

  • 100 Продолжить
  • 101 Протоколы переключения
  • 102 Обработка
  • 103 Ранние подсказки

2XX Успех

  • 200 ОК
  • 201 Создано
  • 202 Принято
  • 203 Неавторизованная информация
  • 204 Нет содержимого
  • 205 Сбросить содержимое
  • 206 Частичное содержимое
  • 207 Multi-Status
  • 208 Уже сообщено
  • 226 IM Используется

3XX Redirection

  • 300 Несколько вариантов выбора
  • 301 Постоянно перемещено
  • 302 Найдено
  • 303 См. Другое
  • 304 Не изменено
  • 305 Использовать прокси
  • 306 Переключение прокси
  • 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 Время ожидания шлюза
  • 505 Http-версия не поддерживается
  • 506 Varient Также ведутся переговоры
  • 507 Недостаточно памяти
  • 508 Обнаружена петля
  • 510 Не расширен
  • 511 Требуется сетевая аутентификация
0 голосов
/ 26 декабря 2017

Когда ресурс изменяется, код ответа должен быть 200 («ОК») . Если состояние ресурса изменяется таким образом, что URI изменяется на ресурс (например, учетная запись пользователя переименовывается), код ответа равен 301 («перемещен постоянно») , а заголовок Location должен содержать новый URI.

Когда объект удаляется, код ответа должен быть 200 («ОК»).

Перейдите по ссылке ниже для получения более подробной информации - код статуса для отдыха

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...