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

«Где находится информация в POST-запросе?» — вопрос из категории Сети, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В 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.