Как связаться с flask -прекрасный API из приложения реагировать родной? - PullRequest
0 голосов
/ 17 февраля 2020

Я новичок в бэкэнде. Я пытаюсь разработать 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, но я не нашел, где я не прав. Пожалуйста, скажите мне, если у вас есть идеи! Я думаю, что и клиентский и серверный коды в порядке, проблема в том, что мои запросы чем-то заблокированы.

1 Ответ

0 голосов
/ 18 февраля 2020

Решено: проблема была в моем брандмауэре ... спасибо Рикардо за CORS do c =)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...