Ответ
Нет, это противоречит принципам REST. REST (Representational State Transfer) опирается на использование семантики стандартных HTTP-методов для выполнения различных операций с ресурсами. Использование только DELETE сделает API нефункциональным и неидиоматичным.
Почему это плохая практика:
- Нарушение конвенций: Каждый HTTP-метод имеет четкое назначение.
- Потеря семантики: Клиенты (браузеры, библиотеки) ожидают определенного поведения от методов.
- Сложность реализации: Вам придется передавать intent (действие "создать", "прочитать") в теле запроса или URL, что усложняет дизайн.
| Стандартное соответствие HTTP-методов и операций CRUD в REST: | HTTP Метод | Операция CRUD | Назначение в REST |
|---|---|---|---|
| GET | Read | Получение ресурса(ов) | |
| POST | Create | Создание нового ресурса | |
| PUT/PATCH | Update | Полное/частичное обновление ресурса | |
| DELETE | Delete | Удаление ресурса |
Пример корректного REST-контроллера (Spring):
@RestController
@RequestMapping("/api/books")
public class BookController {
@GetMapping
public List<Book> getAll() { /* ... */ }
@PostMapping
public Book create(@RequestBody Book book) { /* ... */ }
@PutMapping("/{id}")
public Book update(@PathVariable Long id, @RequestBody Book book) { /* ... */ }
@DeleteMapping("/{id}")
public ResponseEntity<Void> delete(@PathVariable Long id) {
// Логика удаления
return ResponseEntity.noContent().build();
}
}