Я новичок в бэкэнде. Я пытаюсь разработать flask успокоительный API. Я следовал за документацией и сделал предложенный минимальный API, который просто возвращает jsonified dict. С почтальоном, curl и в браузере, нет проблем, API работает и отвечает на мои запросы.
Однако из моего реагирующего нативного приложения я всегда получаю сообщение об ошибке Netwrok.
Я пытался множество вещей: - несколько IP-адресов для flask serveur - разные способы использования топора ios - разные ОС: win10, Ubuntu - разные конечные точки: /, / api, / test - различные способы написания API (flask -рестительный класс, flask функции приложения ...) - манипулы из веб-документации: режим разработки моего устройства, chrome инструменты разработки (переадресация портов) - Я попросил реагирующего нативного разработчика проверить мой клиентский код, по его словам, ничего плохого,
точности: - python код работает в виртуальной среде conda - приложение работает под node js и экспо - папки-папки моего приложения и моего API находятся на одном уровне - сервер flask не отвечает 404 или что-либо еще, он не отвечает вообще, ошибка, возвращаемая в реагировать на родную, является сетевой ошибкой - в зависимости от URL, сетевые ошибки возникают сразу или с задержкой в 2 минуты - flask показывает запросы и статус при вызове почтальоном, curl, chrome, но не реагирует, когда я нажимаю на кнопки из собственного приложения реагировать
Вот (один из) мой код python :
from flask import (Flask, jsonify)
# from flask_restful import Resource, Api
from flask_cors import CORS, cross_origin
app = Flask(__name__)
CORS(app)
@app.route("/api", methods=["GET"])
def get():
return jsonify(hello='bouh !')
if __name__ == '__main__':
app.run(host="0.0.0.0", port=5000, debug=True)
и вот код клиента:
import React, {Component} from 'react';
import { View, Button } from 'react-native';
import axios from 'axios';
import { sharedStyles } from '../../SHARED/_shared';
var url = "http://192.168.1.16:5000/api";
export default class PrevCommune extends Component {
constructor(props){
super(props);
this.navigation=this.props.navigation;
};
getAxios=()=>{
axios.get(`${url}`).then((response)=>{
console.log("succes axios :",response);
}).catch((error)=>{
console.log("fail axios :", error);
});
};
getFetch=()=>{
fetch(url).then((response)=>{
console.log("succes fetch :",response)
}).catch((error)=>{
console.log("fail fetch :",error)
})
}
render(){
return (
<View style={sharedStyles.mainContainer}>
<Button onPress={()=>this.getAxios()} title={"get axios"}></Button>
<Button onPress={()=>this.getFetch()} title={"get fetch"}></Button>
</View>
);
};
};
И строки, возвращаемые запросами:
fail axios : [Error: Network Error]
fail fetch : [TypeError: Network request failed]
Я видел много туто, видео, статьи на flask API, но я не нашел, где я не прав. Пожалуйста, скажите мне, если у вас есть идеи! Я думаю, что и клиентский и серверный коды в порядке, проблема в том, что мои запросы чем-то заблокированы.