Setting Up RESTful APIs with Flask or Django
⚖️ Flask vs Django for REST APIs
Feature Flask Django (with DRF)
Type Micro-framework Full-stack web framework
Flexibility Highly customizable Batteries-included
REST Support Manual setup or Flask-RESTful Django REST Framework (DRF)
Ideal For Lightweight, fast APIs Scalable, complex APIs with admin
๐ง 1. Setting Up RESTful API with Flask
✅ Step-by-step:
a. Install Flask
bash
Copy
Edit
pip install Flask
b. Basic API Example (app.py)
python
Copy
Edit
from flask import Flask, jsonify, request
app = Flask(__name__)
# Mock data
books = [{"id": 1, "title": "1984", "author": "George Orwell"}]
@app.route('/books', methods=['GET'])
def get_books():
return jsonify(books)
@app.route('/books', methods=['POST'])
def add_book():
data = request.get_json()
books.append(data)
return jsonify(data), 201
@app.route('/books/<int:book_id>', methods=['GET'])
def get_book(book_id):
book = next((b for b in books if b["id"] == book_id), None)
return jsonify(book) if book else ('Not Found', 404)
if __name__ == '__main__':
app.run(debug=True)
c. Run Server
bash
Copy
Edit
python app.py
๐งฐ Optional for Flask: Use Flask-RESTful
bash
Copy
Edit
pip install flask-restful
Example:
python
Copy
Edit
from flask import Flask
from flask_restful import Api, Resource
app = Flask(__name__)
api = Api(app)
class Hello(Resource):
def get(self):
return {'message': 'Hello, API!'}
api.add_resource(Hello, '/')
if __name__ == '__main__':
app.run(debug=True)
๐งฑ 2. Setting Up RESTful API with Django + DRF (Django REST Framework)
✅ Step-by-step:
a. Install Django and DRF
bash
Copy
Edit
pip install django djangorestframework
b. Create a Project and App
bash
Copy
Edit
django-admin startproject myapi
cd myapi
python manage.py startapp books
c. Update settings.py
python
Copy
Edit
INSTALLED_APPS = [
...
'rest_framework',
'books',
]
d. Define a Model (books/models.py)
python
Copy
Edit
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
e. Create Serializer (books/serializers.py)
python
Copy
Edit
from rest_framework import serializers
from .models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = '__all__'
f. Create Views (books/views.py)
python
Copy
Edit
from rest_framework import viewsets
from .models import Book
from .serializers import BookSerializer
class BookViewSet(viewsets.ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
g. Configure URLs (books/urls.py)
python
Copy
Edit
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import BookViewSet
router = DefaultRouter()
router.register(r'books', BookViewSet)
urlpatterns = [
path('', include(router.urls)),
]
Include this in myapi/urls.py:
python
Copy
Edit
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('books.urls')),
]
h. Run Migrations and Server
bash
Copy
Edit
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
You now have a full REST API at: http://127.0.0.1:8000/api/books/
๐ง Summary
Task Flask Django + DRF
Setup Time Very fast Moderate
Learning Curve Low Medium to High
Admin Panel ❌ No (needs third-party) ✅ Yes
Built-in Auth ❌ No (needs extension) ✅ Yes (ready out-of-the-box)
Ideal Use Case Simple APIs or microservices Complex or large-scale APIs
Learn Full Stack Python Course in Hyderabad
Read More
Flask vs Django for Full Stack Development: A Comparison
How to Use Django Models for Database Management
Visit Our IHUB Talent Training Institute in Hyderabad
Comments
Post a Comment