在我的POST请求中找不到请求正文

时间:2020-08-18 21:35:43

标签: node.js api express

我正在使用Node and 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 个答案:

答案 0 :(得分:2)

在发送application/json内容类型时,应使用bodyParser.json()而不是bodyParser.urlencoded({ extended: false })

例如:

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