Juniorrrrr
@Juniorrrrr

Почему express отдает пустой req.body?

Подскажите пожалуйста, поднял локально сервер/
Использую express "^4.17.2"

const express = require('express');
const { v4: uuidv4 } = require('uuid');
const app = express();
const port = 3000;

app.use(express.urlencoded({ extended: false }))
app.use(express.json());

app.post('/api/text', (req, res) => {
  console.log("---", req.body);
  res.send("text");

})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})


Отправляю через постман запрос POST, req.body всегда пустой объект

Подскажите пожалуйста что делаю не так ?

61facfe59734f256601316.png
61facff05c8f6457130868.png
  • Вопрос задан
  • 1796 просмотров
Пригласить эксперта
Ответы на вопрос 1
@grisha228
Вариант N1

Подключить body-parser

Код
npm install body-parser

const express = require('express');
const { v4: uuidv4 } = require('uuid');
const app = express();
const port = 3000;
const bodyParser = require('body-parser');

app.use(express.urlencoded({ extended: false }))
app.use(express.json());

app.use(bodyParser.json())

app.post('/api/text',(req, res) => {
    console.log("---", req.body);
    res.send("text");

})

app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
})


Вариант N2

При помощи chunk.
ВАЖНО. Вывод делать внутри end или переделать код в асинхронную функцию и делать await для on('data'). В данном случае body можно вызвать только внутри:
req.on('end', () => {
        console.log("---", body);
    });

в ином случае он будет пустой, тк body не успевает записаться, а on.('end') выполняется.

Код
const express = require('express');
const { v4: uuidv4 } = require('uuid');
const app = express();
const port = 3000;

app.use(express.urlencoded({ extended: false }))
app.use(express.json());

app.post('/api/text',(req, res) => {
    let body = '';
    req.on('data', chunk => {
        body += chunk.toString();
    });
    req.on('end', () => {
        console.log("---", body);
    });
    res.send("text");

})

app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
})

Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы