Где находится информация в POST-запросе?

Ответ

В POST-запросе данные (тело запроса) передаются в теле (body), а не в URL. Конкретное место и формат определяются заголовком Content-Type.

Основные способы в Node.js/Express:

  1. application/x-www-form-urlencoded (стандартная форма HTML):

    // Данные: name=John&age=30
    app.use(express.urlencoded({ extended: true })); // Middleware для парсинга
    app.post('/submit', (req, res) => {
        console.log(req.body.name); // 'John'
        console.log(req.body.age);  // '30'
    });
  2. application/json (наиболее распространен для API):

    // Данные: {"name":"John","age":30}
    app.use(express.json()); // Middleware для парсинга JSON
    app.post('/api/users', (req, res) => {
        const userData = req.body;
        // ... обработка
    });
  3. multipart/form-data (для загрузки файлов):

    const multer = require('multer');
    const upload = multer();
    // Для полей формы
    app.post('/upload', upload.none(), (req, res) => {
        console.log(req.body); // Текстовые поля формы
    });
    // Для файлов
    app.post('/upload-file', upload.single('avatar'), (req, res) => {
        console.log(req.file); // Информация о загруженном файле
    });

Важно: Для доступа к req.body в Express обязательно нужно подключить соответствующий middleware парсер (express.json(), express.urlencoded()). Без него req.body будет undefined.

Ответ 18+ 🔞

А, ну вот, опять про этот req.body! Чувак, это же классика, как не знать, где данные в POST-запросе прячутся. Они не в URL болтаются, как у гопников на лавочке, а в теле запроса (body) сидят, как сыр в мышеловке. А чтобы их оттуда выковырять, надо заголовок Content-Type посмотреть — он как инструкция, что за хуйню нам прислали.

Смотри, как это в Node.js с Express делается, главное — парсеры не забудь, а то нихуя не получится:

  1. application/x-www-form-urlencoded — это как старые добрые HTML-формы, данные в строку слипшиеся.

    // Пришло: name=Ivan&drink=Vodka
    app.use(express.urlencoded({ extended: true })); // Вот этот парсер — твой лучший друг, без него нихуя!
    app.post('/submit', (req, res) => {
        console.log(req.body.name); // 'Ivan'
        console.log(req.body.drink); // 'Vodka' — вот и вся магия
    });
  2. application/json — сейчас все API этим дышат, данные структурированные, красивые.

    // Прилетело: {"name":"Petr","iq":150}
    app.use(express.json()); // А это парсер для JSON, тоже обязателен, ёпта!
    app.post('/api/genius', (req, res) => {
        const data = req.body; // Всё, данные твои, делай что хошь
        // ... тут какая-нибудь хитрая логика
    });
  3. multipart/form-data — это когда кроме текста ещё и файлы цепляют. Тут уже посложнее, обычно multer в помощь.

    const multer = require('multer');
    const upload = multer();
    // Если файлов нет, а просто поля формы
    app.post('/upload', upload.none(), (req, res) => {
        console.log(req.body); // Смотри, все текстовые поля тут
    });
    // А вот если с файлом
    app.post('/upload-avatar', upload.single('avatar'), (req, res) => {
        console.log(req.file); // А тут уже информация про файл, который прилетел
        console.log(req.body.name); // И про остальные поля тоже не забудь
    });

Запомни раз и навсегда, как «Отче наш»: без нужного middleware-парсера (express.json() или express.urlencoded()) твой req.body будет undefined, и ты будешь сидеть и чесать репу, думая, что всё сломалось. Просто подключи эту хуйню в начале, и волнение ебать — всё заработает.