Javascript 从React.js到节点后端的Rest调用错误
下面的代码从react.js frontend a backend node.js执行rest调用,但是当我执行rest调用时,我在后端看到了错误:非法参数未定义,为了解决这个问题,我尝试在postman中进行rest调用,一切正常,错误在哪里 Frontend React.js:Javascript 从React.js到节点后端的Rest调用错误,javascript,node.js,reactjs,frontend,backend,Javascript,Node.js,Reactjs,Frontend,Backend,下面的代码从react.js frontend a backend node.js执行rest调用,但是当我执行rest调用时,我在后端看到了错误:非法参数未定义,为了解决这个问题,我尝试在postman中进行rest调用,一切正常,错误在哪里 Frontend React.js: import axios from 'axios'; import server from "../../../config/config"; import qs from 'qs'; res
import axios from 'axios';
import server from "../../../config/config";
import qs from 'qs';
restlogin(email,password){
const data = { 'Email': email,'Password': password };
const options = {
method: 'POST',
headers: { 'content-type': 'application/json' },
data: qs.stringify(data),
url: "http://172.16.53.248:8989/login"
}
axios(options);
}
后端节点.js
app.post("/login", async function(request, response) {
var ret = false;
try {
//var data = request.body;
var data = request.body;
console.log("\n Email: "+data.Email+"\n Password: "+data.Password);
ret = await UserController.Login(
data.Email,
data.Password
);
} catch (err) {
ManageError.SendError("Errore in login: " + err);
ret = false;
}
response.setHeader("Content-Type", "application/json");
response.send(
JSON.stringify({
return: ret
})
);
});
我发现这里有几个问题 您正在向数据属性传递以下“qs.stringify(data)”,这是一个字符串,结果如下:Email=test%40pmail.com&Password=my%20passwd 也就是说,后端中的request.body是一个空对象{},在这个实现中永远不会得到这些值 使用Postman客户端工作的原因是(我认为)您在请求的主体中传递了一个JSON对象,但在React应用程序中传递了一个字符串
检查“qs.stringify”方法是否是您真正想要用于实现的方法。您是否在后端实现了json解析器?如果没有,您需要在后端实现json解析器来接收包含json正文的请求。Frontend React.js:
import axios from 'axios';
import server from "../../../config/config";
import qs from 'qs';
restlogin(email,password){
const data = { 'Email': email,'Password': password };
const options = {
method: 'POST',
headers: { 'content-type': 'application/json' },
data: JSON.stringify(data),
url: "http://172.16.53.248:8989/login"
}
axios(options);
}
后端节点.js
app.post("/login", async function(request, response) {
var ret = false;
try {
var data = JSON.parse(request.body);
console.log("\n Email: "+data.Email+"\n Password: "+data.Password);
ret = await UserController.Login(
data.Email,
data.Password
);
} catch (err) {
ManageError.SendError("Errore in login: " + err);
ret = false;
}
response.setHeader("Content-Type", "application/json");
response.send(
JSON.stringify({
return: ret
})
);
});
控制台日志显示了什么?@YoandryCollazo错误:非法参数未定义后端中的哪一行抛出该错误?此:ret=wait UserController.Login(data.Email,data.Password);你能打印“数据”吗?