我正在创建一个使用Mern堆栈的应用程序,我已经成功地使用axios从react前端向端点发送了POST请求。请参见下面的react前端代码,这是一个表单,它在按钮单击函数上发布了注册证书。
//Register form in react, onclick handler
handleSubmit(e){
e.preventDefault();
const{fname, lname, email, password} = this.state;
const loginObj = { fname: fname, lname: lname, email: email, password: password};
console.log(loginObj);
axios.post('http://localhost:8000/post/members', loginObj);
}
表单中的参数填充了这些状态值,当检查请求负载时,我可以看到从LoginObj对象发送到控制台的相同值。router.post('/members', getMembers); // this is my route endpoint calling the getMembers function imported
//The method called by the endpoint
export const getMembers = (req, res)=>{
console.log("you called me ");//this is displayed on the console when the request is sent
console.log(req.body);// this returns {} no matter what data is sent is the POST request
}
我希望能够存储POST请求中的值,并读取和写入我的数据库。要做到这些,我首先需要一个API,它可以充分解释POST请求中的值,有人能从上面看到为什么我可能无法从请求的正文中读取任何值吗?
2条答案
按热度按时间wf82jlnq1#
这可能是因为您没有在express服务器中设置解析器中间件,您可以尝试使用express内置的json解析器。(参考:https://expressjs.com/en/4x/api.html#express.json)
如果这还不够,您可以尝试根据您的请求发送内容类型头:
0ejtzxu12#
在express中,我们需要一个主体解析器中间件来提取传入请求的整个主体部分,并将其暴露在req.body上
所以我认为你需要的身体解析器包,一切都会工作得很好,这里是如何安装它的设置
在您的index.js在服务器: