【发布时间】:2020-08-28 03:46:24
【问题描述】:
我是 React 的初学者。我开发了一个 Flask 后端,现在我想将它与 React 配对作为前端。
我在 React 中使用 fetch 来发出 GET 请求。当我读取数据时,调用response.text() 时的文本或响应是我的应用程序public 目录中的index.html 文件
这是我的反应代码:
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)
})
}
这是我的烧瓶应用程序的 MRE:
@app.route('/')
def index():
return {'snippets':['blah','blaha']
我在package.json中的代理
"proxy": "http://127.0.0.1:5000/"
我的烧瓶后端在 5000 端口运行,并在 3000 端口做出反应
需要注意的一点是 POST 请求(来自<form>)确实被代理到后端服务器,我可以在烧瓶中检索 POST 请求的内容。使用 fetch 的 GET 请求不起作用。
目录结构:
-env
-getcode
-templates
-static
-__init__.py
-routes.py
-getcode-client
-src
-public
run.py
这里getcode是flask应用的目录,getcode-client包含使用create-react-app创建的React应用
注意: 我也尝试像这样设置手动代理:https://create-react-app.dev/docs/proxying-api-requests-in-development/#configuring-the-proxy-manually
但现在没有显示 react 应用程序。它完全显示了我的烧瓶后端的 json 输出。
包.json:
{
"name": "getcode-client",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.3.2",
"@testing-library/user-event": "^7.1.2",
"axios": "^0.19.2",
"http-proxy-middleware": "^1.0.3",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-router-dom": "^5.1.2",
"react-scripts": "3.4.1"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
【问题讨论】:
-
也许flask在
/路由上提供了一些index.html文件,你能用/api替换/然后再试一次。 -
没有提供模板
标签: python reactjs flask fetch