Когда отправляется POST-запрос с сайта?

Ответ

POST-запрос отправляется браузером или JavaScript-кодом при необходимости передать данные на сервер для обработки, что обычно приводит к изменению состояния на сервере (создание, обновление данных). Основные сценарии:

  1. Отправка HTML-формы: Когда пользователь нажимает кнопку отправки в форме с атрибутом method="POST".
    <form action="/api/users" method="POST">
      <input type="text" name="username">
      <input type="email" name="email">
      <button type="submit">Зарегистрироваться</button>
    </form>
  2. Вызов API из JavaScript: При использовании fetch(), axios или XMLHttpRequest для взаимодействия с backend API.
    // Отправка JSON данных
    fetch('/api/orders', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ productId: 123, quantity: 2 })
    });
  3. Загрузка файлов: Через форму с enctype="multipart/form-data" или с помощью FormData API в JavaScript.

На стороне сервера (например, в Node.js с Express) данные из POST-запроса извлекаются из тела запроса (request body).

Ответ 18+ 🔞

А, ну вот, классика жанра! Сидишь такой, пишешь форму на сайте, а потом бац — и всё куда-то улетает. Это, дружище, и есть тот самый POST-запрос, который всё это безобразие и организует. По сути, это когда ты не просто смотришь на страницу, а впендюриваешь на сервер какую-то свою информацию, чтобы он её обработал. Сервер, получается, не просто статичную хуйню отдаёт, а меняет своё состояние: записывает твой коммент, создаёт заказ или, не дай бог, регистрирует нового пользователя.

Основные сценарии, где этот зверь всплывает:

  1. Отправка HTML-формы. Самый древний и почтенный способ. Нажал кнопку «Отправить» — и понеслась. Браузер сам всё соберёт и отправит.

    <form action="/api/users" method="POST">
      <input type="text" name="username">
      <input type="email" name="email">
      <button type="submit">Зарегистрироваться</button>
    </form>

    Главное тут — не забыть method="POST", а то отправится GET-ом, и все твои пароли будут торчать в адресной строке. Пизда рулю тогда полная.

  2. Вызов API из JavaScript. Вот тут уже начинается магия. Никаких перезагрузок страницы, всё асинхронно и красиво. Используешь fetch или axios.

    // Отправка JSON данных
    fetch('/api/orders', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ productId: 123, quantity: 2 })
    });

    Сделал заказ в корзине — этот код тихонечко, без лишнего шума, отправит данные на бэкенд. Удобно, ёпта.

  3. Загрузка файлов. Тот самый случай, когда нужно отправить не только текст, но и фотку своей манды с ушами (то есть, котика, конечно). Тут нужна форма с enctype="multipart/form-data" или объект FormData в JS.

А на стороне сервера, например, в Node.js с Express, тебе нужно будет эти данные из тела запроса (request body) вытащить. Раньше для этого нужны были отдельные промежуточные обработчики вроде body-parser, сейчас в Express уже встроено. Главное — не забыть указать app.use(express.json()) для JSON или app.use(express.urlencoded()) для данных из форм, а то будешь сидеть и удивление пиздец испытывать, почему в req.body пусто. Доверия ебать ноль к входящим данным, всегда их валидируй, а то какой-нибудь распиздяй отправит тебе вместо числа строку, и всё накроется медным тазом.