Create a simple REST API in python using Flask.

Mateen Kiani

Mateen Kiani

Published on Sat Jul 29 2023·4 min read

flask - python

What actually is a Rest API?

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.

Step 1:

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.

Step 2:

Create a python file (for example file.py), open it in any text editor and write the following code

from flask import Flask
app = 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.

Rest Api with both GET and POST request

from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def home():
if (request.method == 'GET'):
return 'Recieved GET request at homepage'
else:
dataposted = request.data
return 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 requests
postData = "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

Creating multiple routes

To create another route simply decorate another method with @app.route(‘/[routeAddressHere]’)

from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def home():
if (request.method == 'GET'):
return 'Recieved GET request at homepage'
else:
dataposted = request.data
return 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.data
return 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.

Return Json response

We can return json response by using jsonify method included in flask package.

from flask import Flask, request, jsonify
app = 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:

python json response

json response

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.


Mateen Kiani
Mateen Kiani
kiani.mateen012@gmail.com
I am a passionate Full stack developer with around 3 years of experience in MERN stack development and 1 year experience in blockchain application development. I have completed several projects in MERN stack, Nextjs and blockchain, including some NFT marketplaces. I have vast experience in Node js, Express, React and Redux.