尝试通过React Native向Flask后端发出Axios HTTP请求

时间:2019-09-18 22:02:57

标签: javascript reactjs react-native flask axios

我正在尝试通过Axios发出HTTP请求,此响应是对我的后端Flask应用程序登录端点的本机响应,但是,当我运行Expo时,键入用户名并单击“ Login”,我的“在线状态”仍为“离线”。有人可以帮我吗?

这是我的烧瓶代码:

from flask import Flask, request, abort, jsonify

app = Flask(__name__)

users = []

@app.route("/login", methods=["POST"])
def login():
username = request.json.get('username', None)
if username is None or username in users:
    abort(401)
else:
    users.append(username)
    return jsonify({
    'status': 'OK',
    'message': 'Successfully Logged in'
    })


if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')
#app.run(debug=True)
#app.run(debug=True, host='http://127.0.0.1:5000') 
#app.run(debug=True, host='http://146.203.130.213:5000')

这是我的本机代码:

import React from 'react';
import { StyleSheet, Text, View, TextInput, Button, FlatList } from 
'react-native';
import axios from 'axios';

const serverUrl = '{my IP address}:5000';
//const serverUrl = 'http://127.0.0.1:5000';
const http = axios.create({
baseURL: serverUrl,
}); 

export default class App extends React.Component {
constructor(props) {
 super(props);
  this.state = {
   input: '',
   messages: [],
  };
}

onLogin() {
 const { isLoggedIn, username } = this.state;
  if (!isLoggedIn) {
   http.post('/login', {username})
    .then(() => this.setState({isLoggedIn: true}))
    .catch((err) => console.log(err))
  }  
 }

render() {
 const { messages, isLoggedIn } = this.state;
  return (
  <View style={styles.container}>
   <View>
   <Text>Login</Text>
   <TextInput
   onChangeText={(val) => this.setState({username: val})}
   />
  <Button title='Login' onPress={() => this.onLogin()} />
  <Text> Online Status: {isLoggedIn ? 'Online' : 'OffLine'}</Text>
 </View>
</View>
);
}
}

const styles = StyleSheet.create({
  container: {
  flex: 1,
  backgroundColor: '#fff',
  alignItems: 'center',
  justifyContent: 'center',
  },
});

任何帮助将不胜感激。

0 个答案:

没有答案