How to Build RESTful APIs with Flask

A Step-by-Step Guide to Creating RESTful APIs Using Flask

Madhu deepak
3 min readFeb 5, 2025
image by Abdelhadi Dyouri

Flask is a lightweight and flexible web framework in Python that makes it easy to build RESTful APIs. Whether you are a beginner or an experienced developer, Flask provides the necessary tools to create robust APIs quickly. In this guide, we will walk you through the process of building a RESTful API using Flask, covering installation, setup, and implementation.

What is a RESTful API?

A RESTful API (Representational State Transfer) is a web service that follows REST principles, enabling communication between client and server using HTTP methods like GET, POST, PUT, and DELETE. These APIs allow applications to interact with one another seamlessly, making them an essential part of modern web development.

Prerequisites

Before we start, ensure you have the following:

  • Python installed (preferably Python 3)
  • pip (Python package manager)
  • A basic understanding of Python programming

To install Flask, use the following command:

pip install flask

For building a RESTful API, we will also use Flask-RESTful, which provides additional support:

pip install flask-restful

Setting Up the Flask Application

Create a new Python file, e.g., app.py, and import the required modules:

from flask import Flask, request, jsonify
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)Creating API Endpoints

Now, let’s define a simple API with CRUD operations. We will create a resource called Item that allows users to retrieve, add, update, and delete items.

Creating API Endpoints

Now, let’s define a simple API with CRUD operations. We will create a resource called Item that allows users to retrieve, add, update, and delete item

class Item(Resource):
items = []

def get(self, name):
for item in self.items:
if item['name'] == name:
return item, 200
return {"message": "Item not found"}, 404

def post(self, name):
data = request.get_json()
item = {"name": name, "price": data['price']}
self.items.append(item)
return item, 201

def put(self, name):
data = request.get_json()
for item in self.items:
if item['name'] == name:
item['price'] = data['price']
return item, 200
item = {"name": name, "price": data['price']}
self.items.append(item)
return item, 201

def delete(self, name):
for index, item in enumerate(self.items):
if item['name'] == name:
del self.items[index]
return {"message": "Item deleted"}, 200
return {"message": "Item not found"}, 404

Adding the Resource to the API

api.add_resource(Item, “/item/<string:name>”)

Running the Flask App

To run the API, add the following lines at the end of your app.py file:

if __name__ == "__main__":
app.run(debug=True)

Then, execute the script using:

python app.py

Your API will be running on http://127.0.0.1:5000.

Testing the API

Use tools like Postman or CURL to test the endpoints:

Adding an Item

curl -X POST "http://127.0.0.1:5000/item/phone" -H "Content-Type: application/json" -d '{"price": 499}'

Retrieving an Item

curl -X GET "http://127.0.0.1:5000/item/phone"

Updating an Item

curl -X PUT "http://127.0.0.1:5000/item/phone" -H "Content-Type: application/json" -d '{"price": 599}'

Deleting an Item

curl -X DELETE "http://127.0.0.1:5000/item/phone"

Conclusion

Building a RESTful API with Flask is straightforward and efficient. With Flask-RESTful, you can quickly set up endpoints, handle HTTP requests, and manage resources effectively. This guide covered the basic structure, but you can extend the API by integrating a database like SQLite or PostgreSQL, adding authentication, and improving error handling.

--

--

Madhu deepak
Madhu deepak

Written by Madhu deepak

Software Engineer and Developer

No responses yet