Код состояния HTTP для обновления и удаления?



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

844   8  

8 ответов:

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

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

9.6 Поставить

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

9.7 удалить

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

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

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

HTTP 204 нет контента: сервер успешно обработал запрос, но не возвращает какой-либо контент

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

короткий ответ: для обоих положить и удалить, вы должны отправить либо 200 (ОК) или 204 (нет контента).

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

HTTP 1.1 decision diagram

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

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

удалить

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

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

  • Если удалять нечего, используйте 204или404 (операция удаления идемпотентна, удалить уже удаленный элемент операция прошла успешно, так что вы можете вернуться 204, но это правда, что идемпотент не обязательно подразумевает тот же ответ)

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

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

поставить

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

  • 200/204 по тем же причинам, что и удаление выше.
  • 202 если операция еще не была завершена.

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

  • может быть 201 (если вы создали элемент, потому что это ваше поведение)
  • 404 если вы не хотите создавать элементы через КЛАСТЬ.

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

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

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

и не всегда 200.

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

сервер выполнил запрос, и агент пользователя должен сбросить представление документа, которое вызвало отправку запроса ... [например] очистка формы, в которой вводится информация.

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

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

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

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

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

В Июне 2014 Года RFC7231 заменяет адресу rfc2616. Если вы делаете отдых через HTTP, то RFC7231 точно описывает, какое поведение ожидается от GET, PUT, POST и DELETE

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

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

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

Comments

    Ничего не найдено.