我正在本地主机上构建Web应用程序。
前端是Reactjs框架,运行在localhost:3000
后端是nodejs + Express,在localhost:4000中运行
现在,我在下面创建了API:
router.post('/register', function (req, res) {
console.log(req.body); // {}, why it is empty?
// create new instance, save it to database
User.create(req.body).then(function () {
res.send('success');
});
});
前端部分是:
handleSubmit = (e) => {
e.preventDefault();
this.props.form.validateFieldsAndScroll((err, values) => {
if (!err) {
console.log('Received values of form: ', values); // value is not empty, I have tested! So we did send something to the API
const input = JSON.stringify({
username: values.username,
password: values.password,
});
console.log(input);
$.ajax({
url: `${API_ROOT}/register`,
method: 'POST',
data: JSON.stringify({
username: values.username,
password: values.password,
}),
}).then((response) => {
if (response === 'success') {
this.props.history.push('/login');
} else {
console.log('do not jump');
}
});
}
});
}
我已经由邮递员测试过该API,可以将用户添加到MongoDB,因此该API很不错。
我有console.log发送到API的内容,它不是空的,但是,后端API接收到了空的请求正文。我已经解决了“ Access-Control-Allow-Origin”问题,因此我认为确实向API发送了一些内容,但是后端API收到了空的请求正文。
答案 0 :(得分:0)
如果您添加内容类型标头,说明请求的主体是哪种类型,则应该可以正常工作。
$.ajax({
url: `${API_ROOT}/register`,
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
data: JSON.stringify({
username: values.username,
password: values.password,
})
})