Одним из немногих ограничений, накладываемых архитектурой REST на общий дизайн, является кэширование. Кэширование в HTTP работает со всем URI, который действует как ключ кеширования, где значение соответствует кешированному ответу представления. Любая небезопасная операция, выполняемая с этим URI, такая как POST, PUT, DELETE, ..., приведет к удалению этого сохраненного ответа (также если превышен определенный временной порог). При добавлении дополнительных параметров к URI кэш, который де-факто действует с полным URI, может не найти представление ресурса, чтобы его удалить. Еще одна проблема с удалением ассоциированного ресурса в фоновом режиме заключается в том, что он обходит любые кеши, поэтому они не заметят этого удаления в первую очередь и могут обслуживать клиентов с устаревшим ответом. Таким образом, особенно если клиент принимает решение об удалении связанного ресурса, лучше выполнить второй запрос DELETE.
Обратите внимание, что DELETE
определен только для удаления сопоставления URI этого ресурса, так что последовательный запрос на том же URI не возвращает данные этого ресурса, но это не обязательно означает, что данные этого ресурса были удалены из системы. Однако обычно эти данные также удаляются как часть операции DELETE
. Это прекрасный пример того, что некоторые вещи в архитектуре REST зависят от реализации и ведут себя прозрачно для клиентов, что означает, что они действительно не знают, как на самом деле ведет себя удаленная система.