如何通过API(ExpressJS)发布数据(ReactJS)?

时间:2017-12-04 03:15:50

标签: reactjs api express post

所以基本上我有一个登录,每当用户按下登录按钮

时发送发布数据
sendLogin(e){
    e.preventDefault();
    fetch('/users', {
      method: 'POST',
      body: JSON.stringify({
        email: this.email.value,
        password: this.password.value
      }),
    }).then(function(response) {
      return response
    }).then(function(body) {
      console.log(body);
    });
  }
  render(){
    return (
      <form onSubmit={(event) => this.sendLogin(event)} class="asdf">
        <input type="text" placeholder="email" ref={(input) => { this.email = input}}/>
        <input type="password" placeholder="password" ref={(input) => { this.password = input }}/>
        <input type="submit" placeholder="submit"/>
      </form>
    )
  }

在我的express server.js代码中,我设置了控制台记录我们得到的数据

app.post('/users', function(req, res) {
    var user = req.body;
    res.end('Success');
    console.log('GOT A REQUEST');
    console.log(user);
})

console.log(用户)部分根本不工作,而在客户端代码中则是console.log(正文);部分也根本不起作用。关于如何解决这个问题的任何想法?

编辑:他们两人都未定义

当我更改返回响应以返回response.json时,它会给我这个错误

Uncaught (in promise) SyntaxError: Unexpected token S in JSON at position 0
Promise rejected (async)

1 个答案:

答案 0 :(得分:1)

  

console.log(用户)部分根本不工作,并且在客户端中   编码console.log(正文);部分也根本不起作用。任何想法   如何解决这个问题?

这是因为执行顺序:

改变这个:

res.end('Success');
console.log('GOT A REQUEST');
console.log(user);

致:

console.log('GOT A REQUEST');
console.log(user);
res.end('Success');
  

Uncaught(在promise中)SyntaxError:JSON中的意外标记S.   位置0承诺被拒绝(异步)

此错误的原因是res.end('Success');,您发送的是String而不是JSON,请尝试res.end({data : logged_in_user_data});

  

注意:如果您需要使用数据进行响应,请使用诸如此类的方法   res.send()和res.json()。