Installing Flask on Linux or Mac
On Debian 10 or Ubuntu 20:
sudo pip3 install flask flask-cors
On Mac or FreeBSD:
sudo pip install flask flask-cors
Creating a basic flask app:
#!/usr/bin/env python3
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/", defaults = {'path': ""})
@app.route("/<string:path>")
@app.route("/<path:path>")
def index(path):
req_info = {
'host': request.host.split(':')[0],
'path': "/" + path,
'query_string': request.args,
'remote_addr': request.environ.get('HTTP_X_REAL_IP', request.remote_addr),
'user_agent': request.user_agent.string
}
return jsonify(req_info)
if __name__ == '__main__':
app.run()
Run the app
chmod u+x main.py
./main.py
Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Do a test curl against it
$ curl -v "http://localhost:5000/oh/snap?x=1&x=2"
< HTTP/1.0 200 OK
< Content-Type: application/json
< Content-Length: 65
< Access-Control-Allow-Origin: *
< Server: Werkzeug/1.0.1 Python/3.7.8
< Date: Wed, 21 Apr 2021 17:07:58 GMT
<
{"host":"localhost","path":"/oh/snap","query_string":{"x":"1"},"remote_addr":"127.0.0.1","user_agent":"curl/7.72.0"}
Deploying to Google Cloud App Engine
Create a requirements.txt file:
echo "flask" > requirements.txt
Create an app.yaml file:
printf "runtime: python38\nenv: standard\n" > app.yaml
Now deploy the app to Google using the gCloud command:
gcloud app deploy