Mateen Kiani
Published on Sat Jul 29 2023·4 min read
REST is an acronym for REpresentational State Transfer. A REST API defines a set of functions which are used to perform requests like GET, POST and PUT and receive responses via HTTP protocol.
This was just a brief intro on what a Rest API is. Let’s create a very simple rest api in python. For this tutorial we will use flask to create our API and the reason for that is its simplicity.
Install Flask using pip
pip install -U Flask
pip is a python package manager and is used to install any python package. To know more about pip follow this link.
Create a python file (for example file.py), open it in any text editor and write the following code
from flask import Flaskapp = Flask(__name__)@app.route('/')def home():return "This is home"app.run(host="127.0.0.1", port="5000")
In this code we have imported flask and defined a function named home. Flask contains a built-in wrapper for generating routes in the form of @app.route(‘/’), where @app is the name of the object containing our Flask app. With this decorator present, Flask knows that the next line (sharing the same level of indentation) will be a function containing route logic.
Now run your python file using
python3 file.py
or
python file.py
On successful execution you will see a message like this in your terminal
Serving Flask app “rest” (lazy loading)
Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
Debug mode: off
Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Now when you open http://127.0.0.1:5000/ in your browser you will see that your rest api is working.
This is a very simple example. Now if you want to make a Post request you will have to do some more work also most of the rest APIs return json response so we will also cover that as we move ahead.
from flask import Flask, requestapp = Flask(__name__)@app.route('/', methods=['GET', 'POST'])def home():if (request.method == 'GET'):return 'Recieved GET request at homepage'else:dataposted = request.datareturn f'recieved a POST request at homepage with {dataposted}'app.run(host="127.0.0.1", port="5000")
To test whether post requests are working or not create another python file and name it whatever you want. I have named it request.py and written following code to make HTTP Post request.
import requestspostData = "post data"recieve = requests.post('http://127.0.0.1:5000/', data=postData)print(str(recieve.text))
After execution you should get this output
recieved a POST request at homepage with post data
To create another route simply decorate another method with @app.route(‘/[routeAddressHere]’)
from flask import Flask, requestapp = Flask(__name__)@app.route('/', methods=['GET', 'POST'])def home():if (request.method == 'GET'):return 'Recieved GET request at homepage'else:dataposted = request.datareturn f'recieved a POST request at homepage with {dataposted}'@app.route('/about', methods=['GET', 'POST'])def about():if (request.method == 'GET'):return 'Recieved GET request at aboutpage.'else:dataposted = request.datareturn f'recieved a POST request at about page with {dataposted}.'app.run(host="127.0.0.1", port="5000")
you can test for multiple routes by either opening https://127.0.0.1:5000/about in your browser or by making post request using request.py file as mentioned before.
We can return json response by using jsonify method included in flask package.
from flask import Flask, request, jsonifyapp = Flask(__name__)@app.route('/', methods=['GET', 'POST'])def home():if (request.method == 'GET'):return jsonify(output = "this is json response")app.run(host="127.0.0.1", port="5000")
output:
The post Create a simple REST API in python using Flask appeared first on Mild Dev.
You can mention your queries in the comments section.