Express后端收到的请求正文与我从React前端发送的方式不同

时间:2020-03-21 08:33:50

标签: reactjs express

由于某些原因,我正在尝试从我的React前端向我的Express前端发送一个发布请求,因此正在显示我要接收的对象,以便该对象是另一个对象的键,其值是和空字符串。

这是我的onSubmit React函数

handleSubmit = event => {
    event.preventDefault()

    const backend = '/api/login'

    fetch(backend, {
        method: 'POST',
        mode: 'no-cors',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
        },
        body: JSON.stringify(this.state)
    })
        .then(res => {
            res.json()
        })
        .then(user => {
            console.log(user)
        })
        .catch(err => {
            console.log(err)
        })

}`

我在快递服务器上的帖子功能

app.post("/login", (req, res) => {
    console.log(req.body)

})

例如,如果我要发送的对象是{username: "user1", password: "password"},则当我console.log(req.body)时,控制台中将显示{ '{"username":"user1","password":"password"}': '' }

如何解决此问题,以便获得所需的对象?

2 个答案:

答案 0 :(得分:0)

因为它是JSON格式。要解析它,您可以使用: JSON.parse('{"username":"user1","password":"password"}')JSON.parse(req.body)

答案 1 :(得分:0)

使用JSON.stringify()的方法很好,因为它应该像字符串一样发布到服务器。但是,如果您希望它成为后端的对象,则必须使用以下方法将其解析:

const userObj = JSON.parse(req.body.Data); // it will parse it back as an object