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

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

Ответ

Это основные HTTP-методы, различающиеся семантикой (назначением) и свойствами.

Метод Назначение Свойства Данные
GET Получение (чтение) данных с сервера. Безопасный (не изменяет состояние сервера), идемпотентный. Передаются в URL (query string).
POST Отправка данных на сервер для создания нового ресурса или выполнения операции. Не безопасный, не идемпотентный. Передаются в теле запроса (body).
PUT Полное обновление существующего ресурса или его создание по известному URI. Не безопасный, но идемпотентный. Передаются в теле запроса (body).

Пояснение свойств:

  • Безопасный (Safe): Метод не должен изменять состояние сервера.
  • Идемпотентный (Idempotent): Многократное выполнение одного и того же запроса дает идентичный результат состоянию после первого выполнения.

Примеры в контексте REST API:

// GET - получить пользователя с id=123
GET /api/users/123

// POST - создать нового пользователя
POST /api/users
Body: {"name": "John", "email": "john@example.com"}

// PUT - полностью обновить данные пользователя с id=123
PUT /api/users/123
Body: {"name": "John Doe", "email": "doe@example.com"}