Flask React GET Request se nezdařil, ale POST Request je úspěšný

hlasů
0

Jsem trochu začátečník React. Vyvinul jsem backend baňky a teď ji chci spárovat s frontem React.

používám fetch v React to the GET Request. Když čtu data, text nebo odpověď, když volám response.text() je index.html soubor v public adresář mé aplikace

Zde je můj kód reakce:

componentDidMount() {
    fetch('/')
      .then(response => {
        console.log(response.text()) //Here is the text() i said before
        this.setState({ snippets: response.data })
      })
      .catch(error=>{
        console.log(error)
      })
  }

Zde je MRE mé aplikace pro baňky:

@app.route('/')
def index():
    return {'snippets':['blah','blaha']

Můj proxy v package.json

    proxy: http://127.0.0.1:5000/

Můj backend baňky běží na portu 5000 a reaguje na portu 3000

Jedna věc k poznámce je, že POST požadavek (od <form> ) získá proxy server a mohu načíst obsah požadavku POST v baňce. Je to GET požadavek pomocí fetch to nefunguje.

Struktura adresáře:

-env
-getcode
  -templates
  -static
  -__init__.py
  -routes.py
-getcode-client
  -src
  -public
run.py

Tady getcode je adresář aplikace baňky a getcode-client obsahuje aplikaci React vytvořenou pomocí create-react-app

POZNÁMKA: Také jsem se pokusil nastavit manuální proxy jako je tento: https://create-react-app.dev/docs/proxying-api-requests-in-development/#configuring-the-proxy-manually

ale nyní se aplikace aplikace nezobrazuje. kompletně ukazuje výstup json mého backendu.

Položena 12/05/2020 v 12:30
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

Protože používáte CRA, doporučuji použít jejich nastavení proxy.

Chcete-li vývojovému serveru sdělit, aby proxy vyvíjel jakékoli neznámé požadavky na vyvíjený server API, přidejte do balíčku package.json pole proxy, například:

"proxy": "http://localhost:4000",

Ve vašem případě to bude na portu 5000.

Zde je více k tématu.

Při výrobě bych však doporučil použít nginx nebo apache, abychom se v budoucnu vyhnuli problémům.

Odpovězeno 15/05/2020 v 10:57
zdroj uživatelem

hlasů
0

Nejsem si jistý, ale myslím si, že problém je v tom, že používáte Local a React i Flask a nespecifikujete port v fetch požadavky, zkuste toto:

componentDidMount() {
    fetch('/:5000')
      .then(response => {
        console.log(response.text()) //Here is the text() i said before
        this.setState({ snippets: response.data })
      })
      .catch(error=>{
        console.log(error)
      })
  }
Odpovězeno 15/05/2020 v 10:49
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more