В чём разница между HTTP-методами PUT, POST и DELETE?

«В чём разница между HTTP-методами PUT, POST и DELETE?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

PUT, POST и DELETE — это HTTP-методы для операций с ресурсами (CRUD).

Метод Назначение Идемпотентность Безопасность
PUT Создание или полное обновление ресурса по известному URI. Да Нет
POST Создание нового ресурса или выполнение сложных действий. Нет Нет
DELETE Удаление ресурса по указанному URI. Да Нет

Ключевые различия:

  • PUT идемпотентен: многократный вызов с одними данными даёт тот же результат (ресурс создаётся или обновляется один раз).
  • POST не идемпотентен: каждый вызов может создать новый ресурс.
  • PUT требует полного представления ресурса, POST может принимать частичные данные.

Примеры запросов:

# PUT — обновить или создать пользователя с id=1
PUT /api/users/1 HTTP/1.1
Content-Type: application/json

{"name": "Alice", "email": "alice@example.com"}
# POST — создать нового пользователя (id присвоит сервер)
POST /api/users HTTP/1.1
Content-Type: application/json

{"name": "Bob", "email": "bob@example.com"}
# DELETE — удалить пользователя с id=1
DELETE /api/users/1 HTTP/1.1

Практическое правило: Используйте POST для создания, PUT для обновления (если клиент знает полный URI), DELETE для удаления.