Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未在axios请求中发送正文数据_Javascript_Node.js_Reactjs_Axios - Fatal编程技术网

Javascript 未在axios请求中发送正文数据

Javascript 未在axios请求中发送正文数据,javascript,node.js,reactjs,axios,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)=>{ c

我试图通过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);
})


但是我得到了一个空的身体。我正在获取标题和其他数据,但未获取数据。

获取请求不应包含正文

将方法从“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所说的,确保你的标题包含你要发送的内容类型。

看来你只有两点可以让它正常工作:

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

  • 第二:您可以添加http头(就像您对授权头所做的那样)
    内容类型
    :'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 */
试试这个

this.axios('realties', { params: this.filter })
如果出现“bodyParser已弃用”错误,请尝试以下操作-

app.use(express.json())//解析JSON正文(适用于Express 4.16+)

如果您想从HTTP请求主体获取数据,请使用“post”方法。

HTTP请求不再禁止获取主体,建议将其更改为post对我们这些使用无法控制的外部API的人并没有帮助。我的答案不是让人们点击他们无法控制的外部API,这是为了你上面看到的问题。我还说你“不应该”有一个可能你“不可能”得到的答案,但这更取决于现在的观点。既然现在的标准不再明确排除GET机构,我想说“不应该”是一个非常个人的观点。当你搜索关于HTTP GET Body的答案时,这个答案也会出现在谷歌上,所以从这个意义上说它是没有帮助的。如果你确定你是通过POST发出请求的,那么你的问题可能是bodyParser。请确保您的express实例正在使用它。