首页 > 解决方案 > Axios 发布请求正文只是服务器端的一个空对象(React - Axios - Node.js - Express)

问题描述

我试图向我的服务器发送一个发布请求并使用它:

let dataToReturn = {
      method: "POST",
      url: "http://localhost:9000/logData",
      headers: { "testing" : "IT WORKED" },
      body: {"hola" : 'testing to see if this counts'}
    }

axios(dataToReturn) 

它知道它会发送。我检查了检查器中的网络选项卡,可以看到它已发送,并且可以在服务器上执行 req.headers 并打印出标题。但是每当我尝试在服务器上记录 req.body 时,它只会打印出 '{}'

  var body = {
      firstName: 'testName',
      lastName: 'testLastName'
  };

  axios.post('http://localhost:9000/logData', body)
    .then(function (response) {
      console.log(response);
    })
    .catch(function (error) {
      console.log(error);
    });

当我执行“req.body”时,这有效 ^^ 并成功打印出正文 为什么上面的示例记录一个空对象?

这是路由在服务器端的样子

app.post('/logData', function(req, res) {
    console.log('recieved post');
    console.log(req.body);
    res.sendStatus(200);
})

我承认我是一个菜鸟,这可能是一个愚蠢的问题,所以请原谅我的无知。如果您需要,也很乐意发布更多信息。

标签: node.jspostaxios

解决方案


您需要在请求的标头中添加内容类型。如下所述更改您的标头

标头:{“测试”:“它工作”,“内容类型”:“应用程序/json”},


推荐阅读