Что такое HTTP-метод POST?

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

Ответ

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

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

  • Тело запроса: Данные передаются в теле запроса, а не в URL.
  • Безопасность: Более подходит для конфиденциальных данных (пароли, платежные реквизиты), так как они не отображаются в истории браузера или логах сервера в URL.
  • Идемпотентность: Не является идемпотентным — многократный вызов одного и того же POST-запроса может создавать дублирующиеся ресурсы.
  • Кэширование: По умолчанию ответы не кэшируются.

Типичные сценарии использования:

  • Отправка данных формы (логин, регистрация).
  • Загрузка файла.
  • Создание новой записи через REST API (например, нового пользователя).

Пример POST-запроса с использованием Fetch API:

fetch('https://api.example.com/users', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'John Doe',
    email: 'john@example.com'
  })
})
.then(response => response.json())
.then(data => console.log('Success:', data))
.catch(error => console.error('Error:', error));

На сервере (например, в Node.js с Express) данные извлекаются из req.body после соответствующего парсинга (с помощью middleware, такого как express.json()).