From 5b0a38dc791a322a30f93b666858a0fcf4e27840 Mon Sep 17 00:00:00 2001 From: Mia Wang <yw21218@ic.ac.uk> Date: Tue, 19 Apr 2022 14:35:04 +0100 Subject: [PATCH] react flask --- backend/.gitignore | 161 +++++++++++++++++++ backend/__pycache__/react_app.cpython-38.pyc | Bin 589 -> 540 bytes backend/react_app.py | 3 +- package.json | 3 +- src/App.js | 80 ++------- src/setupProxy.js | 11 ++ 6 files changed, 189 insertions(+), 69 deletions(-) create mode 100644 backend/.gitignore create mode 100644 src/setupProxy.js diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 00000000..e2efcaa8 --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,161 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +**/__pycache__/ +**/datasets/ +*.py[cod] +*$py.class +*.pyc +*.pyo + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintainted in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +# our project specific stuff +MetaAugment/__pycache__/main.cpython-38.pyc + +**/mnist/ \ No newline at end of file diff --git a/backend/__pycache__/react_app.cpython-38.pyc b/backend/__pycache__/react_app.cpython-38.pyc index 3d91ed792b161bb8625c6d1ad4bd98d5bf7a5850..ecc590f085e748de904d61d2f09cdf6924ceb902 100644 GIT binary patch delta 205 zcmX@hGKYmXl$V!_0SIO+i%W`{$Sdou2jrwMq%h_%<T6Gv<}yVwF*2kwrZP7(MzN%_ zEMQGxTF98foWjz=02E<MVGU-`WP1rRL6hkgt6NTDarQ0tqSV6D)Z&tf6IZaY0%eL= zC)+c&tFr@{#T+1|%uI|-|JYcIKq7vc>`|;~AbmwlKyDH9<bRA(h9H?Dh+a604amC1 YVUwGmQks)$#|Y#VgM<W_IhZ*Z0nLRd_y7O^ delta 235 zcmbQka+ZZRl$V!_0SFc!h)qhG$SdpN1mvVJq%h_%<T6Gv<}yVwF@pF^In22%Q7nuM zsf?+t&5TiOsVu2%&5S@k+XD6!=7o$YEGeul3_ux<6t-XnP4<a#;vAZcw^*G0gMufP zu3%#Wnp?y+S(&ljf&<7b1`!O*OpHwb*jS4|96wFYDAu%`#NzBCCLp(n8AwENfd%4| y^NWg$SSDX&lrjY=ErJ*ZXR!lWw>WHa^HWN5QtcRlykd~21Q>akI2bvYIT!)_87%q$ diff --git a/backend/react_app.py b/backend/react_app.py index a7ae42b7..b082b2ab 100644 --- a/backend/react_app.py +++ b/backend/react_app.py @@ -1,8 +1,7 @@ from flask import Flask, request -from flask_cors import CORS +# from flask_cors import CORS app = Flask(__name__) -CORS(app) @app.route('/profile') diff --git a/package.json b/package.json index 9be4245f..254121e4 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,5 @@ "last 1 firefox version", "last 1 safari version" ] - }, - "proxy": "http://127.0.0.1:5000" + } } diff --git a/src/App.js b/src/App.js index 17f212cc..2f270ce2 100644 --- a/src/App.js +++ b/src/App.js @@ -7,72 +7,22 @@ import logo from './logo.svg'; // import {BrowerRouter as Router, Route, Switch} from 'react-router-dom'; function App() { - // new line start - const [profileData, setProfileData] = useState(null) - - function getData() { - axios({ - method: "GET", - url:"/profile", - }) - .then((response) => { - const res =response.data - setProfileData(({ - profile_name: res.name, - about_me: res.about})) - }).catch((error) => { - if (error.response) { - console.log(error.response) - console.log(error.response.status) - console.log(error.response.headers) - } - })} - //end of new line - - return ( - <div className="App"> - <header className="App-header"> - <img src={logo} className="App-logo" alt="logo" /> - <p> - Edit <code>src/App.js</code> and save to reload. - </p> - <a - className="App-link" - href="https://reactjs.org" - target="_blank" - rel="noopener noreferrer" - > - Learn React - </a> - - {/* new line start*/} - <p>To get your profile details: </p><button onClick={getData}>Click me</button> - {profileData && <div> - <p>Profile name: {profileData.profile_name}</p> - <p>About me: {profileData.about_me}</p> - </div> - } - {/* end of new line */} - </header> - </div> - ); + useEffect(() => { + fetch('/', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ }) + }) + .then((response) => response.json()) + .then((data) => console.log(data)); + }, []); + + return ( + <div> + <Home /> + </div> + ); } -// useEffect(() => { -// fetch('/', { -// method: 'POST', -// headers: { 'Content-Type': 'application/json' }, -// body: JSON.stringify({ }) -// }) -// .then((response) => response.json()) -// .then((data) => console.log(data)); -// }, []); - -// return ( -// <div> -// <Home /> -// </div> -// ); -// } export default App; diff --git a/src/setupProxy.js b/src/setupProxy.js new file mode 100644 index 00000000..928c19b9 --- /dev/null +++ b/src/setupProxy.js @@ -0,0 +1,11 @@ +const { createProxyMiddleware } = require('http-proxy-middleware'); + +module.exports = function(app) { + app.use( + '/api', + createProxyMiddleware({ + target: 'http://localhost:5000', + changeOrigin: true, + }) + ); +}; \ No newline at end of file -- GitLab