Ответ
POST-запрос отправляется браузером или JavaScript-кодом при необходимости передать данные на сервер для обработки, что обычно приводит к изменению состояния на сервере (создание, обновление данных). Основные сценарии:
- Отправка HTML-формы: Когда пользователь нажимает кнопку отправки в форме с атрибутом
method="POST".<form action="/api/users" method="POST"> <input type="text" name="username"> <input type="email" name="email"> <button type="submit">Зарегистрироваться</button> </form> - Вызов 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 }) }); - Загрузка файлов: Через форму с
enctype="multipart/form-data"или с помощьюFormDataAPI в JavaScript.
На стороне сервера (например, в Node.js с Express) данные из POST-запроса извлекаются из тела запроса (request body).
Ответ 18+ 🔞
А, ну вот, классика жанра! Сидишь такой, пишешь форму на сайте, а потом бац — и всё куда-то улетает. Это, дружище, и есть тот самый POST-запрос, который всё это безобразие и организует. По сути, это когда ты не просто смотришь на страницу, а впендюриваешь на сервер какую-то свою информацию, чтобы он её обработал. Сервер, получается, не просто статичную хуйню отдаёт, а меняет своё состояние: записывает твой коммент, создаёт заказ или, не дай бог, регистрирует нового пользователя.
Основные сценарии, где этот зверь всплывает:
-
Отправка 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-ом, и все твои пароли будут торчать в адресной строке. Пизда рулю тогда полная. -
Вызов API из JavaScript. Вот тут уже начинается магия. Никаких перезагрузок страницы, всё асинхронно и красиво. Используешь
fetchилиaxios.// Отправка JSON данных fetch('/api/orders', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ productId: 123, quantity: 2 }) });Сделал заказ в корзине — этот код тихонечко, без лишнего шума, отправит данные на бэкенд. Удобно, ёпта.
-
Загрузка файлов. Тот самый случай, когда нужно отправить не только текст, но и фотку своей манды с ушами (то есть, котика, конечно). Тут нужна форма с
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 пусто. Доверия ебать ноль к входящим данным, всегда их валидируй, а то какой-нибудь распиздяй отправит тебе вместо числа строку, и всё накроется медным тазом.