从 React.js 到节点后端的 Rest 调用错误
2020-10-22
132
下面的代码从 react.js 前端和后端 node.js 执行 rest 调用,但是当我执行 rest 调用时,我在后端看到 错误:非法参数未定义 ,为了解决这个问题,我尝试在 postman 中进行 rest 调用,一切正常,错误在哪里?
前端 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: qs.stringify(data),
url: "http://172.16.53.248:8989/login"
}
axios(options);
}
后端 Node.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
})
);
});
3个回答
前端react.js:
721081731
后端node.js
4252228253
Apps Maven
2020-11-04
你的后端是否实现了 json-parser?如果没有,你需要在后端实现 json-parser 来接收包含 JSON 主体的请求。
alpha-bird
2020-10-22
我在这里看到几个问题。
您正在将以下“qs.stringify(data)”传递给数据属性,它是一个字符串,结果如下: Email=test%40pmail.com&Password=my%20passwd
也就是说,您后端的 request.body 是一个空对象 {},并且您将永远不会通过这种实现获得这些值
Postman 客户端工作的原因是(我认为)您在请求的正文中传递了一个 JSON 对象,但在您的 React 应用程序中,您传递的是一个字符串。
检查“qs.stringify”方法是否是您真正想要用于实现的方法。
Raul.F
2020-10-22