Цитується з моєї іншої відповіді тут :
Історично, RFC 2616, опублікований у 1999 році, був найбільш посиланням специфікацій HTTP 1.1. На жаль, його опис про ідентифікацію було невиразним , що залишає місце для всіх цих дискусій. Але ці характеристики були замінені RFC 7231. Цитується з RFC 7231, розділ 4.2.2 Ідентифіковані методи , акцент мій:
Метод запиту вважається "idempotent", якщо призначений ЕФЕКТ НА СЕРВЕРІ декількох однакових запитів із цим методом такий же, як ефект для одного такого запиту. З методів запиту, визначених цією специфікацією, PUT, DELETE та безпечні методи запиту
є ідентичними .
Отже, написано в специфікаціях, idempotency - це все про вплив на сервер. Перший DELETE, що повертає 204, а потім наступний DELETE, що повертається 404, такий різний код статусу НЕ робить DELETE неідентичним. Використовувати цей аргумент для обгрунтування наступного повернення 204, просто не має значення.
Гаразд, тому мова не йде про ідентифікацію. Але тоді може бути наступне питання, що робити, якщо ми все-таки вирішимо використати 204 в наступному DELETE? Чи гаразд?
Гарне питання. Мотивація зрозуміла: дозволити клієнтові все-таки досягти наміченого результату, не турбуючись про обробку помилок. Я б сказав, що повернення 204 в наступному DELETE - це в основному нешкідливий "біла брехня" на стороні сервера, яка на стороні клієнта не одразу розповість різниці. Тому є люди, які роблять це в дикій природі, і це все ще працює. Просто майте на увазі, що таку брехню можна вважати семантично дивною, оскільки "GET / non-postoji" повертає 404, але "DELETE / non-postoji" дає 204, тоді клієнт зрозуміє, що ваша послуга не відповідає повністю розділ 6.5.4 404 Не знайдено .
Але тоді, намічений шлях, натяканий RFC 7231, тобто повернення 404 на наступному DELETE, не повинен бути проблемою в першу чергу. Ще багато розробників вирішили це зробити. Це, мабуть, тому, що будь-який клієнт, який реалізує HTTP DELETE (або будь-який метод HTTP, з цього приводу), не сліпо вважатиме, що результат завжди буде успішним 2xx. І тоді, як тільки розробник почне розглядати питання про помилки, 404 Not Found була б однією з перших помилок, яка виникає на увазі. У цей момент він / вона сподівається зробити висновок, що ігнорувати помилку 404 для операції HTTP DELETE семантично безпечно. Проблема вирішена.