Axios Node.Js带有参数的GET请求未定义
我正在后端运行带有nodejs的React应用。每当我进行不带参数的axios调用时,一切正常,但是当我尝试添加参数并将其与req.body.variableName一起使用时,它将输出未定义的内容。打印req.body只是一个空的花括号,因此不发送我的数据。
带有axios调用的响应文件
getFriendCount(){
var data = {
UserID: this.state.UserID,
}
console.log(data)
axios.get("http://localhost:8081/getFriendCount", data).then((response)=>{
if (response.status >= 400) {
console.log(response.status);
throw new Error("Bad response from server");
} else{
return response.data[0].friendCount
}
}).then((data)=>{
console.log(data)
this.setState({count: data})
})
}
serversql.js
const HTTP_PORT = process.env.PORT || 8081;
const express = require("express");
const bodyParser = require('body-parser');
const app = express();
const urlencodedParser = bodyParser.urlencoded({ extended: false });
const cors = require("cors");
const mysql = require('mysql');
app.use(cors());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
const {addNewMemory,getAllMemories, getFriendCount} = require('./db-services.js');
//Database connection...
app.get('/data', getAllMemories);
app.post('/addMemory',urlencodedParser,addNewMemory);
app.get('/getFriendCount',urlencodedParser, getFriendCount);
app.listen(HTTP_PORT, ()=>{console.log("API listening on: " + HTTP_PORT)});
db-services.js(req.body.UserID未定义)
module.exports={
getFriendCount:(req,res) => {
console.log(req.body) //empty curly brace
console.log(req.body.UserID) //undefined
console.log(req.params) //empty curly brace
var sql = "SELECT COUNT(*) AS friendCount FROM friendship WHERE UserId1 = (?) OR UserId2 = (?)";
var values = [req.body.UserID, req.body.UserID]
dbconnection.query(sql, values, function(err,result,fields){
if(err){
return res.status(500).send(err);
} else {
res.send(result);
}
})
},
}
回答如下:在Axios.get()
中,数据表示参数,而不是主体数据。因此,请使用req.params
代替主体。然后,您以这种方式使用路由。
app.get('/getFriendCount/:Id',urlencodedParser, getFriendCount);
然后请在下面使用此ID。
console.log(req.params.Id);
然后您需要像这样更改您的API。
axios.get(`http://localhost:8081/getFriendCount/${this.state.UserID}`)
请尝试这个。
Axios Node.Js带有参数的GET请求未定义
我正在后端运行带有nodejs的React应用。每当我进行不带参数的axios调用时,一切正常,但是当我尝试添加参数并将其与req.body.variableName一起使用时,它将输出未定义的内容。打印req.body只是一个空的花括号,因此不发送我的数据。
带有axios调用的响应文件
getFriendCount(){
var data = {
UserID: this.state.UserID,
}
console.log(data)
axios.get("http://localhost:8081/getFriendCount", data).then((response)=>{
if (response.status >= 400) {
console.log(response.status);
throw new Error("Bad response from server");
} else{
return response.data[0].friendCount
}
}).then((data)=>{
console.log(data)
this.setState({count: data})
})
}
serversql.js
const HTTP_PORT = process.env.PORT || 8081;
const express = require("express");
const bodyParser = require('body-parser');
const app = express();
const urlencodedParser = bodyParser.urlencoded({ extended: false });
const cors = require("cors");
const mysql = require('mysql');
app.use(cors());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
const {addNewMemory,getAllMemories, getFriendCount} = require('./db-services.js');
//Database connection...
app.get('/data', getAllMemories);
app.post('/addMemory',urlencodedParser,addNewMemory);
app.get('/getFriendCount',urlencodedParser, getFriendCount);
app.listen(HTTP_PORT, ()=>{console.log("API listening on: " + HTTP_PORT)});
db-services.js(req.body.UserID未定义)
module.exports={
getFriendCount:(req,res) => {
console.log(req.body) //empty curly brace
console.log(req.body.UserID) //undefined
console.log(req.params) //empty curly brace
var sql = "SELECT COUNT(*) AS friendCount FROM friendship WHERE UserId1 = (?) OR UserId2 = (?)";
var values = [req.body.UserID, req.body.UserID]
dbconnection.query(sql, values, function(err,result,fields){
if(err){
return res.status(500).send(err);
} else {
res.send(result);
}
})
},
}
回答如下:在Axios.get()
中,数据表示参数,而不是主体数据。因此,请使用req.params
代替主体。然后,您以这种方式使用路由。
app.get('/getFriendCount/:Id',urlencodedParser, getFriendCount);
然后请在下面使用此ID。
console.log(req.params.Id);
然后您需要像这样更改您的API。
axios.get(`http://localhost:8081/getFriendCount/${this.state.UserID}`)
请尝试这个。