axios 请求中未发送正文数据

新手上路,请多包涵

我正在尝试通过 axios 请求将数据发送到我的后端脚本,但正文看起来是空的。

这是从前端发送的请求:

 axios.request({
  method: 'GET',
  url: `http://localhost:4444/next/api`,
  headers: {
    'Authorization': token
  },
  data: {
    next_swastik: 'lets add something here'
  },

}).then((res)=>{
  console.log("api call sucessfull",res);

}).catch((err)=>{
  console.log("api call unsucessfull",err);

  this.props.toggleLoading(false);
})

这是一个后端:

 app.get('/next/api', verifyToken, function(req, res) {
console.log(req.body);

})

但我得到 {} 空体。我得到标题和其他数据,但不是数据。

原文由 Azima 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 544
2 个回答

GET 请求不应有正文。

将方法从“GET”更改为“POST”

像这样:

 axios.request({
  method: 'POST',
  url: `http://localhost:4444/next/api`,
  headers: {
    'Authorization': token
  },
  data: {
    next_swastik: 'lets add something here'
  },

})

并更改您的 api 以期待发布

app.post('/next/api', verifyToken, function(req, res) {
console.log(req.body);
});

或者

data 属性更改为 params

 axios.request({
  method: 'GET',
  url: `http://localhost:4444/next/api`,
  headers: {
    'Authorization': token
  },
  params: {
    next_swastik: 'lets add something here'
  },

})

并更改 api 以注销参数

app.get('/next/api', verifyToken, function(req, res) {
console.log(req.params);
});

就像@MaieonBrix 所说的那样,确保您的标头包含您要发送的内容类型。

原文由 pidizzle 发布,翻译遵循 CC BY-SA 4.0 许可协议

看起来你只剩下两点可以让它发挥作用:

  • 一:http方法应该设置为 POST 而不是 GET 因为你想发送一些东西。

  • 二:然后您可以添加 http 标头(就像您对授权标头所做的那样) Content-Type :’application/json`

在后端不要忘记使用某种身体解析器实用程序包,例如: body-parser 并使用您的应用程序进行设置。

我想你的服务器正在使用 express,下面是你将如何使用 express:

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

app.use(jsonParser); // use it globally
app.get('your_route', jsonParser, otherMiddleware, (req, res) => ...); // use it for specific routes

/* ... rest of your code */

原文由 MaieonBrix 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题