Какой HTTP-метод следует использовать для отправки данных на сервер?

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

Ответ

Выбор HTTP-метода зависит от семантики операции (создание, обновление, замена) и идемпотентности.

Метод Назначение (Семантика) Идемпотентность Безопасность Тело запроса
POST Создание нового ресурса. Основной метод для отправки данных. Нет Нет Да
PUT Полная замена ресурса по известному URI. Если ресурса нет — создает. Да Нет Да
PATCH Частичное обновление ресурса. Нет* Нет Да
GET Получение данных. Не должен использоваться для отправки, т.к. данные в URL, есть ограничения по длине и кэшированию. Да Да Нет

Почему POST — основной выбор для отправки? Он не имеет ограничений GET (данные в теле, нет лимита длины) и четко указывает на намерение создать что-то новое, что не является идемпотентной операцией.

Пример POST-запроса для создания пользователя:

POST /api/v1/users HTTP/1.1
Host: api.example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJ...

{
  "name": "Alice",
  "email": "alice@example.com",
  "role": "viewer"
}

Ожидаемый успешный ответ: HTTP/1.1 201 Created с заголовком Location: /api/v1/users/123 и телом созданного ресурса.