后端API在从前端发出请求时收到空的请求正文

时间:2018-11-30 11:23:34

标签: node.js ajax reactjs

我正在本地主机上构建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收到了空的请求正文。

1 个答案:

答案 0 :(得分:0)

如果您添加内容类型标头,说明请求的主体是哪种类型,则应该可以正常工作。

$.ajax({
  url: `${API_ROOT}/register`,
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  data: JSON.stringify({
    username: values.username,
    password: values.password,
  })
})