I needed to make a quick Python web-service and quickly found that of the two most common frameworks, Flask is intended to be minimalist and extensible while Django is intended to be large out of the box and somewhat opinionated (it has ORM tools, etc).
Being that I wanted to get something running fast and I basically just needed a REST API to return a couple results sets from a database, I chose to go with Flask.
Simple Example
The Flask documentation itself has a wonderful examaple here: http://flask.pocoo.org/docs/0.12/quickstart/#a-minimal-application which I followed along with… but here are the cliffs notes:
First, Set up a new virtual environment (PyCharm is a good IDE and gives this as an option when creating a new project).
Create a new file at the top-level of your project and enter this code:
from flask import Flask, request app = Flask(__name__) @app.route('/query/run', methods=['GET']) def run_query(): query = request.args.get('query') limit = request.args.get('limit') return f"You ran {query} with {limit} records." if __name__ == "__main__": app.run(debug=True)
Run the application with PyCharm, or just with your python interpreter.
At this point, you should have a running flask application, and if you go to:
localhost:5000/query/run?query="select * from abc"&limit=5
in your browser, you should see the response properly. You’ve also turned on the interactive debugger (which can be a security issue, so only do this locally). That means if you make changes to your file, it will reload the app and use them immediately. So, if you change “abc” to “abcdef”, save, and refresh the browser, you’ll see the changes.
Note that this is just available locally at the minute as we’re focused on developing the application, not on deploying it yet. So, if you want to show it to someone else from your desktop, you will have to tell Flask to expose the service to all interfaces (0.0.0.0).