Aujourd’hui, les API REST sont indispensables pour connecter des applications web, mobiles et des services tiers. Dans ce guide complet, vous apprendrez pas à pas comment créer une API avec Django Rest Framework (DRF), la sécuriser, puis l’utiliser dans une application frontend ou mobile.
Cet article est conçu pour les débutants mais respecte les standards professionnels utilisés en entreprise.
Chez Akamasoft, nous développons des solutions API modernes, sécurisées et évolutives pour les entreprises africaines et internationales.
1. Comprendre le fonctionnement d’une API REST
Une API permet à plusieurs applications de communiquer entre elles.
Schéma simplifié du fonctionnement :
[ Application Mobile ]
|
v
[ API Django REST ]
|
v
[ Base de données ]
L’API agit comme un intermédiaire sécurisé entre le client (mobile, web) et la base de données.
2. Prérequis techniques
- Python 3.9+
- Connaissances de base en Python
- Un éditeur de code (VS Code recommandé)
- Notions de terminal / ligne de commande
3. Installation de Django et Django Rest Framework
pip install django djangorestframework
Création du projet :
django-admin startproject api_project
cd api_project
Création de l’application :
python manage.py startapp api
Ajoutez dans settings.py :
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'api',
]
4. Création de la base de données
from django.db import models
class Produit(models.Model):
nom = models.CharField(max_length=150)
description = models.TextField()
prix = models.DecimalField(max_digits=10, decimal_places=2)
date_creation = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.nom
Appliquer les migrations :
python manage.py makemigrations
python manage.py migrate
---
5. Création du Serializer (conversion vers JSON)
from rest_framework import serializers
from .models import Produit
class ProduitSerializer(serializers.ModelSerializer):
class Meta:
model = Produit
fields = '__all__'
---
6. Création de l’API (Views)
from rest_framework import viewsets
from .models import Produit
from .serializers import ProduitSerializer
class ProduitViewSet(viewsets.ModelViewSet):
queryset = Produit.objects.all()
serializer_class = ProduitSerializer
---
7. Configuration des URLs
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import ProduitViewSet
router = DefaultRouter()
router.register(r'produits', ProduitViewSet)
urlpatterns = [
path('api/v1/', include(router.urls)),
]
➡️ URL finale :
http://127.0.0.1:8000/api/v1/produits/
---
8. Sécurisation de l’API
Activation de l’authentification
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
}
Installation des tokens
pip install djangorestframework-authtoken
python manage.py migrate
---
9. Tester l’API
Outils recommandés :
- Postman
- Insomnia
Header requis :
Authorization: Token VOTRE_TOKEN
---
10. Performance et scalabilité
Optimisation des performances
- Pagination des résultats
- Mise en cache avec Redis
- Optimisation des requêtes SQL
Scalabilité
[ Client ]
|
[ NGINX ]
|
[ Django API ]
|
[ Redis / Database ]
- Dockerisation
- Load Balancing
- Microservices
---
11. Connexion avec une application frontend ou mobile
Exemple avec JavaScript (fetch)
fetch('http://localhost:8000/api/v1/produits/', {
headers: {
'Authorization': 'Token VOTRE_TOKEN'
}
})
.then(res => res.json())
.then(data => console.log(data));
Architecture globale
[ React / Flutter / Vue ]
|
v
[ API Django ]
|
v
[ Base de données ]
---
12. Bonnes pratiques de sécurité
- Utiliser HTTPS
- Ne jamais exposer les clés secrètes
- Limiter les permissions
- Mettre à jour régulièrement les dépendances
---
Conclusion
Vous savez maintenant créer une API REST complète, sécurisée et prête pour la production avec Django Rest Framework.
Chez Akamasoft, nous accompagnons les entreprises dans le développement d’API modernes, performantes et sécurisées, adaptées aux réalités du marché africain et international.