Python | Build a REST API using Flask - GeeksforGeeks

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 librariesUsing flask_restful library
Using Flask without any external libraries
Using flask_restful library
flask_restful can be installed via the pip command:
 sudo pip3 install flask-restful 
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.
# Using flask to make an api# import necessary libraries and functionsfrom flask import Flask, jsonify, request  # creating a Flask appapp = Flask(__name__)  # on the terminal type: curl http://127.0.0.1:5000/# returns hello world when we use GET.# returns the data that we send when we use POST.@app.route('/', methods = ['GET', 'POST'])def home():    if(request.method == 'GET'):          data = "hello world"        return jsonify({'data': data})    # A simple function to calculate the square of a number# the number to be squared is sent in the URL when we use GET# on the terminal type: curl http://127.0.0.1:5000 / home / 10# this returns 100 (square of 10)@app.route('/home/<int:num>', methods = ['GET'])def disp(num):      return jsonify({'data': num**2})    # driver functionif __name__ == '__main__':      app.run(debug = True)
Output:
Executing the square function:
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.
# using flask_restfulfrom flask import Flask, jsonify, requestfrom flask_restful import Resource, Api  # creating the flask appapp = Flask(__name__)# creating an API objectapi = Api(app)  # making a class for a particular resource# the get, post methods correspond to get and post requests# they are automatically mapped by flask_restful.# other methods include put, delete, etc.class Hello(Resource):      # corresponds to the GET request.    # this function is called whenever there    # is a GET request for this resource    def get(self):          return jsonify({'message': 'hello world'})      # Corresponds to POST request    def post(self):                  data = request.get_json()     # status code        return jsonify({'data': data}), 201    # another resource to calculate the square of a numberclass Square(Resource):      def get(self, num):          return jsonify({'square': num**2})    # adding the defined resources along with their corresponding urlsapi.add_resource(Hello, '/')api.add_resource(Square, '/square/<int:num>')    # driver functionif __name__ == '__main__':      app.run(debug = True)
Output:
saumyajain48
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python Dictionary
How to Install PIP on Windows ?
Enumerate() in Python
Different ways to create Pandas Dataframe
Python String | replace()
*args and **kwargs in Python
Create a Pandas DataFrame from Lists
Convert integer to string in Python
Check if element exists in list in Python
How To Convert Python Dictionary To JSON?