Можно ли удалить данные с помощью HTTP-метода GET?

«Можно ли удалить данные с помощью HTTP-метода GET?» — вопрос из категории HTTP и веб-протоколы, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, метод GET не предназначен для удаления данных. Согласно семантике HTTP, GET является идемпотентным и безопасным (safe) методом, предназначенным только для получения представления ресурса. Он не должен изменять состояние сервера.

Для удаления ресурса следует использовать метод DELETE.

DELETE /api/users/123 HTTP/1.1
Host: api.example.com
Authorization: Bearer <token>

Почему нельзя использовать GET для удаления:

  1. Нарушение контракта протокола: Веб-краулеры, кэширующие прокси и другие автоматические средства считают GET безопасным и могут выполнять его произвольно, что приведет к непреднамеренному удалению данных.
  2. Проблемы с кэшированием: GET-запросы могут кэшироваться на разных уровнях (браузер, CDN).
  3. Уязвимости безопасности: Ссылка с операцией удаления, переданная через GET (например, в <img src="...">), может быть выполнена без ведома пользователя.

В контексте тестирования API (например, с помощью Postman или в автотестах) важно проверять, что endpoint для удаления корректно реагирует только на метод DELETE и возвращает соответствующие коды состояния (например, 200 OK, 204 No Content или 404 Not Found).