Чи є щось непогашене у наданні параметрів для HTTP DELETE-запиту?
Мій сценарій полягає в тому, що я моделюю "Ви впевнені, що хочете видалити це?" сценарій. У деяких випадках стан ресурсу говорить про те, що запитуване видалення може бути недійсним. Ви, напевно, можете собі уявити деякі сценарії, де потрібно підтвердження видалення
Ми прийняли рішення - передати параметр запиту на видалення, щоб вказати, що нормально продовжувати видалення ("? Force_delete = true")
напр
DELETE http://server/resource/id?force_delete=true
Я вважаю, що все ще спокійно:
(a) Семантика DELETE не змінюється - користувач може все-таки надіслати звичайний DELETE-запит, але це може бути невдалим із номером 409, і тіло відповіді пояснить, чому. Я кажу, що це може бути невдалим, оскільки (з причин, які не варто пояснювати) в деяких випадках немає підстав спонукати користувача.
(b) У дисертації Роя немає нічого, що дозволяє припустити, що це суперечить духу REST - чому б це було, оскільки HTTP - це лише одна реалізація REST, тому чому передача параметрів HTTP має значення
Чи може хтось вказати мені на остаточне твердження про те, що цвяхи є причиною, чому це не ВІДПОВІДНО?
Що стосується питання, якщо користувач не вказав force_delete, то я повертаюся 409 Conflict
- це найбільш підходящий код відповіді?
Слідувати
Після деяких подальших досліджень я думаю, що додавання параметрів до DELETE може порушити декілька принципів.
Перший полягає в тому, що реалізація, можливо, порушує "Уніфікований інтерфейс" (див. Розділ 5.1.5 дисертації Роя
Додаючи "force_delete", ми додаємо додаткове обмеження на вже чітко визначений метод DELETE. Це обмеження має значення лише для нас.
Ви також можете стверджувати, що він порушує "5.1.2 клієнт-сервер", оскільки діалог підтвердження насправді викликає занепокоєння інтерфейсу, і знову не всі клієнти захочуть підтвердити видалення.
Пропозиції кому?