我们怎样才能从反馈本地获取fetch函数的post数据来表达api?

时间:2018-06-04 05:28:59

标签: express react-native

问题:

我们怎样才能从反馈本地获取fetch函数的post数据来表达api?

问题面对:

我尝试了以下过程,但在后端API中没有获得这些变量。

如何在后端API中实现变量?任何建议都非常感谢。

以下是响应式本机提取功能:

REACT NATIVE FETCH FUNCTION:

 login = async () => {

   await fetch('http://192.168.1.160:8001/api/login', {
          method: 'POST',
          mode: 'cors',
          cache: 'default',
          header: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
          },

          body: JSON.stringify({
              email: this.state.email,
              password: this.state.password
          })
    })
    .then ((response) =>  response.json())
    .then ((res) => {//console.log(res);
        if(res.error === false){
            AsyncStorage.setItem('user', res.data);
            this.props.navigation.navigate('profile');
        } else{
           // alert(res.message);
        }
    })

  }

快速-API:

快递API如下:

    module.exports = function (req, res) {
console.log('TEST',req.body);
  let { email, password } = req.body;

  let input = { email, password };

  const validator = loginValidator(input);

  if (validator.error) {

    return res.status(400).json({
      error: true,
      message: validator.error.details,
    });

  } else {

    models.users.findOne({
      where: { email: email }
    }).then(user => {

      if (!user) {
        return res.status(400).json({
          error: true,
          message: {
            key: 'email',
            text: MessageHelper.email_already_exist
          }
        });

      } else if (!bcrypt.compareSync(password, user.password)) {

        return res.status(400).json({
          error: true,
          message: {
            key: 'password',
            text: MessageHelper.password_not_valid
          }
        });

      } else {

         var token = jwt.sign({ userid: user.id },Config.get('jwt.privatekey'));
          models.users.update({ token: token },{ where: { id: user.id } }).then(function(result){ 
                return res.json({
                    error: false,
                    message: MessageHelper.user_token_updated,
                   token: token,  
                   data: {
                        user_id: user.id,
                        firstname: user.firstname,
                        lastname: user.lastname,
                        username:user.username,
                        email: user.email,
                        mobile: user.mobile,
                        token: user.token
                        }
                });
            }).catch(function(error){
                return res.status(400).json({
                    error: true,
                    message: error
                });
            })

      }

    });

  }

}

1 个答案:

答案 0 :(得分:1)

  

Fetch还有一个可选的第二个参数,允许你这样做   自定义HTTP请求。您可能想要指定其他内容   标题,或发出POST请求:

fetch('https://mywebsite.com/endpoint/', {
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    firstParam: 'yourValue',
    secondParam: 'yourOtherValue',
  }),
});
  

网络是一种固有的异步操作。获取方法会   返回一个Promise,使编写代码变得简单明了   以异步方式工作:

function getMoviesFromApiAsync() {
  return fetch('https://facebook.github.io/react-native/movies.json')
    .then((response) => response.json())
    .then((responseJson) => {
      return responseJson.movies;
    })
    .catch((error) => {
      console.error(error);
    });
}