Не могу получить тело пост запроса

Рейтинг: 0Ответов: 1Опубликовано: 17.01.2023

Пытаясь получить тело POST запроса назад возвращается undefined. POST запрос отправлял через терминал:

curl -d test=Test -H Accept:application/json --url localhost:3000

Страница index возвращается нормально.

Код:

const express = require('express');
const path = require('path');
const ejs = require('ejs');
const app = express();
const port = 3000;

app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'static'));

app.get('/', (req, res) => {
  res.render('index', {});
})
app.post('/', (req, res) => {
  console.log(req.body); // undefined
  res.render('index', {}); // index прекрасно возвращается пользователю
})

const server = app.listen(port, () => {
  console.log(`Port: ${port}`);
})

Ответы

▲ 1Принят

Пробуй сам запрос отправлять таким образом

curl -d "test=Test" -H "Accept:application/json" --url localhost:3000

У нас работает вот с такими "добавками".

const express = require('express');
const path = require('path');
const ejs = require('ejs');
const app = express();
const port = 3000;

app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'static'));

// Дополнительно добавить
app.use(express.urlencoded({ extended: false })) 
app.use(express.json())
//

app.get('/', (req, res) => {
  res.render('index', {});
})
app.post('/', (req, res) => {
  console.log(req.body);
  res.render('index', {});
})

const server = app.listen(port, () => {
  console.log(`Port: ${port}`);
})