Что такое код возврата статуса HTTP для успешного оператора DELETE в REST?
Я изучаю, как Spring обрабатывать веб-сервисы REST (но я не знаю, является ли это ответ на Spring или более общий, он связан только с концепцией REST).
Итак, я сомневаюсь: что такое код возврата статуса HTTP для успешного оператора DELETE?
Это 204 или 200?
Я знаю, что 200 означает, что мой запрос был правильно выполнен, но, читая онлайн, мне кажется, что я ожидаю его после успешного возвращения GET содержимого, а не после a удалить.
Где-то я обнаружил, что статус 204 получен после
успешное PUT или DELETE. Это правда? Я не могу понять, это означает, что ответ пуст, почему пустой ответ означает, что операция PUT или DELETE прошла успешно?
Ответы
Ответ 1
Нет строгих правил, по которым код состояния HTTP является правильным для каждого метода. Это зависит от того, что именно произошло, какую информацию вам нужно отправить клиенту и т.д. Я могу привести несколько примеров:
-
Успешный DELETE
, без дополнительной информации. 204 No Content
-
Успешный DELETE
, но у вас есть предупреждение о связанных сиротах, которые также должны быть удалены. 200 OK
.
-
Вы приняли запрос DELETE
, но это может занять много времени, и вы сделаете это асинхронно. Клиент должен проверить его позже. 202 Accepted
.
-
Вы приняли запрос DELETE
, но ресурс не может быть удален, а URI вместо reset - по умолчанию. 205 Reset Content
.
Ответ 2
Пустое тело ответа не означает, что удаление выполнено успешно, успешное удаление (обычно) означает, что тело ответа пусто.
Нет списка официальных статусных кодов для API RESTful, но большинство согласны с тем, что 204 - хороший код ответа для успешного удаления, так как обычно нет веской причины возвращать тело ответа после удаления чего-либо.
В общем случае, если операция выполнена успешно, а тело ответа - пустое возвращение 204. Если операция выполнена успешно, а тело ответа НЕ пустое, верните 200
Ответ 3
Пустой ответ не означает, что операция прошла успешно, код ошибки HTTP должен указывать на успех/отказ, а тело ответа может содержать или не содержать данные.
Тело ответа может содержать дополнительную информацию о запросе, например конкретное сообщение для отображения в пользовательском интерфейсе, статистике или информации о времени, относящейся к информации, независимо от того. Но это не обязательно, и цель тела - информационная/диагностическая, если она существует.
Ответ 4
2xx представляет запрос успешно. Xx просто позволяет вам быть более конкретным о том, что произошло (что сервер сделал или возвращается).
Ответ 5
Мне кажется, что 410 является подходящим ответом после удаления. Согласно https://developer.mozilla.org/id/docs/Web/HTTP/Status/410, код состояния 410 предполагает, что ресурс больше недоступен.