Не удается найти тело запроса в моем запросе POST

#node.js #api #express

#node.js #API #выразить

Вопрос:

Я использую Node и Express для обработки своих внутренних запросов. Я делаю вызов с внешнего интерфейса:

           const newData = {id: sub, first_name: given_name, last_name: family_name, email: email}
          const requestOptions = {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify(newData)
        }
          fetch(`/add`, requestOptions)
          .then(res => res.json())
          .then(data => console.log(data))
          .catch(console.log('error2'));
  

которые распознаются моей конечной точкой «/ add». На данный момент я просто хочу console.log получить тело запроса, поэтому моя конечная точка:

 router.post('/add', (req, res) => {
  res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000');

  console.log(req.body, 'hit')
})
  

Однако журнал консоли сервера отображается как {} 'hit' . Когда я использую вкладку сеть, я вижу, что запрос содержит полезную нагрузку, содержащую id, first_name, last_name, and email .

Кто-нибудь может сказать мне, чего мне не хватает, чтобы перенести мои данные на мой сервер.

Также мой сервер настроен body-parser следующим образом:

 const bodyParser = require('body-parser');
const app = express();
app.use(
    bodyParser.urlencoded({
        extended: false,
    })
);
  

Ответ №1:

Поскольку вы отправляете application/json тип контента, вам следует использовать bodyParser.json() вместо bodyParser.urlencoded({ extended: false }) .

Пример:

 const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json())