Что делает HTTP-метод POST и когда его следует использовать?

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

Ответ

POST — это HTTP-метод, предназначенный для отправки данных на сервер, обычно для создания нового ресурса. Он не является идемпотентным: многократная отправка одного и того же запроса может привести к созданию нескольких ресурсов.

Ключевые отличия от GET:

  • Данные передаются в теле запроса (request body), а не в URL.
  • Нет ограничений на размер передаваемых данных (в разумных пределах конфигурации сервера).
  • Более безопасен для передачи конфиденциальной информации, так как данные не отображаются в URL или истории браузера.

Типичные сценарии использования: создание пользователя, отправка формы, загрузка файла, выполнение неидемпотентного действия.

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

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

{
  "name": "Jane Doe",
  "email": "jane@example.com",
  "password": "securePassword123"
}

Ожидаемый успешный ответ сервера:

HTTP/1.1 201 Created
Content-Type: application/json
Location: /api/v1/users/456

{
  "id": 456,
  "name": "Jane Doe",
  "email": "jane@example.com",
  "createdAt": "2023-10-05T12:00:00Z"
}

Код состояния 201 Created и заголовок Location с URI нового ресурса — лучшие практики для ответа на успешный POST-запрос.