Python | Build a REST API using Flask (original) (raw)
Last Updated : 25 Feb, 2022
Prerequisite: Introduction to Rest API
REST stands for REpresentational State Transfer and is an architectural style used in modern web development. It defines a set or rules/constraints for a web application to send and receive data.
In this article, we will build a REST API in Python using the Flask framework. Flask is a popular micro framework for building web applications. Since it is a micro-framework, it is very easy to use and lacks most of the advanced functionality which is found in a full-fledged framework. Therefore, building a REST API in Flask is very simple.
There are two ways of creating a REST API in Flask:
- Using Flask without any external libraries
- Using flask_restful library
Libraries required:
flask_restful
can be installed via the pip command:
sudo pip3 install flask-restful
Method 1: using only Flask
Here, there are two functions: One function to just return or print the data sent through GET or POST and another function to calculate the square of a number sent through GET request and print it.
from
flask
import
Flask, jsonify, request
app
=
Flask(__name__)
@app
.route(
'/'
, methods
=
[
'GET'
,
'POST'
])
def
home():
`` if
(request.method
=
=
'GET'
):
`` data
=
"hello world"
`` return
jsonify({
'data'
: data})
@app
.route(
'/home/<int:num>'
, methods
=
[
'GET'
])
def
disp(num):
`` return
jsonify({
'data'
: num
*
*
2
})
if
__name__
=
=
'__main__'
:
`` app.run(debug
=
True
)
Output:
Executing the square function:
Method 2: Using flask-restful
Flask Restful is an extension for Flask that adds support for building REST APIs in Python using Flask as the back-end. It encourages best practices and is very easy to set up. Flask restful is very easy to pick up if you’re already familiar with flask.
In flask_restful
, the main building block is a resource. Each resource can have several methods associated with it such as GET, POST, PUT, DELETE, etc. for example, there could be a resource that calculates the square of a number whenever a get request is sent to it. Each resource is a class that inherits from the Resource class of flask_restful. Once the resource is created and defined, we can add our custom resource to the api and specify a URL path for that corresponding resource.
from
flask
import
Flask, jsonify, request
from
flask_restful
import
Resource, Api
app
=
Flask(__name__)
api
=
Api(app)
class
Hello(Resource):
`` def
get(
self
):
`` return
jsonify({
'message'
:
'hello world'
})
`` def
post(
self
):
`` data
=
request.get_json()
`` return
jsonify({
'data'
: data}),
201
class
Square(Resource):
`` def
get(
self
, num):
`` return
jsonify({
'square'
: num
*
*
2
})
api.add_resource(Hello,
'/'
)
api.add_resource(Square,
'/square/<int:num>'
)
if
__name__
=
=
'__main__'
:
`` app.run(debug
=
True
)
Output: