Прежде всего, поведение зависит от того, какой вызов DELETE был возвращен в качестве кода ответа.
Если DELETE возвращает 200 - OK
или 204 - No Content
, то клиент должен получить 404 - Not Found
при следующем вызове GET. Это потому, что 202 и 204 означает, что ресурс был удален немедленно.
Однако, если DELETE возвращает 202 - Accepted
, существует вероятность того, что клиент сможет успешно получить ресурс в течение некоторого времени после этого. Это потому, что 202 означает, что ресурс отмечен для удаления, но не обязательно очищается немедленно.
Во-вторых, если задействован кеш, поведение должно быть построено так, чтобы оно соответствовало тому, что произойдет, если бы не было кеша. Успешный DELETE должен всегда приводить к удалению как от истинного происхождения данных в дополнение к любым кешированным копиям.
Если вы только что удалили предмет, почему вы пытаетесь снова «получить» его? Этого не будет. Может быть, я что-то упустил или вопрос не был ясен. –
@Brent Pabst: Рассмотрим, например, ссылки в приложении пользовательского интерфейса, где удаление происходит во всплывающем окне, но ссылка GET находится на открытой странице и не обновляется или переносится почтой, а пользователь вставляет их в адресную строку браузера непосредственно между удаление и т. д. Это зависит от кеша! Идея состоит в том, что если элемент больше не существует, как должен работать GET. Отключить ВСЕ кеширование? Допустимо ли иметь кеш? Каков подход REST ко всему этому? – JohnDoDo
Второй GET, естественно, вернет код HTTP '404 Not Found'. Кэширование - совсем другое дело, для которого я дам удивительно непрозрачный ответ: «Это зависит». Но если * * - второй GET, кажется довольно очевидным, что он будет производить 404? –