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:

  1. Using Flask without any external libraries
  2. 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: