未在axios请求中发送主体数据

时间:2018-09-28 18:48:02

标签: javascript node.js reactjs 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);

})

但是我得到{}空的身体。我正在获取标头和其他数据,但没有数据。

4 个答案:

答案 0 :(得分:3)

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所说的那样,确保标头包含要发送的内容类型。

答案 1 :(得分:2)

似乎只有两点可以使它起作用:

  • one:由于要发送内容,因此应将http方法设置为POST而不是GET

  • two:然后可以添加http标头(如您对授权标头所做的一样)Content-Type:'application / json`

在后端,别忘了使用诸如body-parser这样的body解析器实用程序包,并通过您的应用进行设置。

我想您的服务器正在使用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 */

答案 2 :(得分:0)

尝试一下

this.axios('realties', { params: this.filter })

答案 3 :(得分:0)

如果你收到“bodyParser is deprecated”的错误,试试这个 -

$File = 'S:\Test\test.csv'
$Check = (Import-Csv $File)."VAT Number" | ForEach-Object {
    if ($Check -Contains "DE123456789") {
        Select-Object @{Name='Kundennummer';Expression={'12345'}} | 
        Export-Csv $File -NoTypeInformation
    }
}

如果您想从 HTTP 请求的正文中获取数据,请使用“post”方法。