Pourquoi créer une API REST avec FastAPI ?
Tu dĂ©veloppes en Python et tu souhaites exposer ton code sous forme d’API ? Que ce soit pour alimenter une application mobile, connecter un chatbot, ou simplement structurer ton backend, les API REST sont devenues le standard incontournable du dĂ©veloppement web moderne.
FastAPI est un framework Python rĂ©cent (2018) qui a rapidement conquis les dĂ©veloppeurs grĂące Ă sa simplicitĂ©, ses performances et sa documentation automatique. Dans ce tutoriel pas Ă pas, tu vas construire ta premiĂšre API REST complĂšte, de l’installation jusqu’au dĂ©ploiement.

Qu’est-ce qu’une API REST ?
Une API (Application Programming Interface) REST permet à deux applications de communiquer via le protocole HTTP. ConcrÚtement, ton serveur expose des endpoints (des URLs) que les clients peuvent appeler pour lire, créer, modifier ou supprimer des données.
Les verbes HTTP les plus courants sont :
- GET â rĂ©cupĂ©rer des donnĂ©es (ex: liste des articles)
- POST â crĂ©er une nouvelle ressource
- PUT â mettre Ă jour une ressource existante
- DELETE â supprimer une ressource
Imagine un livreur qui consulte une API pour connaĂźtre sa prochaine livraison : il appelle GET /livraisons/123 et reçoit les dĂ©tails en JSON. C’est aussi simple que ça.
Pourquoi choisir FastAPI ?
FastAPI se distingue des autres frameworks Python (Flask, Django REST Framework) pour plusieurs raisons :
- Performance â il rivalise avec Node.js et Go grĂące Ă son moteur asynchrone basĂ© sur Starlette
- Validation automatique â les types Python (Pydantic) valident tes donnĂ©es sans effort supplĂ©mentaire
- Documentation interactive â Swagger UI et ReDoc sont gĂ©nĂ©rĂ©s automatiquement
- Async natif â idĂ©al pour les appels Ă des API externes ou des bases de donnĂ©es

Installation et configuration
Commence par créer un environnement virtuel et installer FastAPI :
python3 -m venv venv
source venv/bin/activate
pip install fastapi uvicornUvicorn est le serveur ASGI qui fera tourner ton application. Une fois installé, crée un fichier main.py :
from fastapi import FastAPI
app = FastAPI(title="Mon API")
@app.get("/")
def lire_racine():
return {"message": "Bienvenue sur mon API !"}Lance le serveur avec :
uvicorn main:app --reloadOuvre ton navigateur sur http://localhost:8000 et tu verras ton premier endpoint en action. AccĂšde Ă /docs pour dĂ©couvrir la documentation Swagger gĂ©nĂ©rĂ©e automatiquement â tu peux mĂȘme tester tes endpoints directement depuis l’interface.
Créer ton premier endpoint CRUD
Passons à quelque chose de concret : une API de gestion de tùches (to-do list). Voici le modÚle de données et les endpoints :
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Optional
app = FastAPI(title="Gestionnaire de tĂąches")
class Tache(BaseModel):
titre: str
description: Optional[str] = None
terminee: bool = False
taches_db = []
compteur = 1
@app.post("/taches")
def creer_tache(tache: Tache):
global compteur
tache_dict = tache.model_dump()
tache_dict["id"] = compteur
compteur += 1
taches_db.append(tache_dict)
return tache_dict
@app.get("/taches")
def lister_taches():
return taches_db
@app.get("/taches/{tache_id}")
def lire_tache(tache_id: int):
for t in taches_db:
if t["id"] == tache_id:
return t
return {"erreur": "TĂąche introuvable"}
@app.put("/taches/{tache_id}")
def modifier_tache(tache_id: int, tache: Tache):
for i, t in enumerate(taches_db):
if t["id"] == tache_id:
taches_db[i] = {"id": tache_id, **tache.model_dump()}
return taches_db[i]
return {"erreur": "TĂąche introuvable"}
@app.delete("/taches/{tache_id}")
def supprimer_tache(tache_id: int):
for i, t in enumerate(taches_db):
if t["id"] == tache_id:
taches_db.pop(i)
return {"message": "Tùche supprimée"}
return {"erreur": "Tùche introuvable"}
Ajouter une base de données avec SQLite
Pour le moment, les données sont stockées en mémoire et disparaissent au redémarrage. Ajoutons SQLite avec SQLAlchemy :
pip install sqlalchemy databasesCrée un fichier database.py :
from sqlalchemy import create_engine, Column, Integer, String, Boolean
from sqlalchemy.orm import declarative_base, Session
Base = declarative_base()
engine = create_engine("sqlite:///./taches.db")
Base.metadata.create_all(bind=engine)
class TacheDB(Base):
__tablename__ = "taches"
id = Column(Integer, primary_key=True, index=True)
titre = Column(String, nullable=False)
description = Column(String, default="")
terminee = Column(Boolean, default=False)Ensuite, modifie ton main.py pour utiliser la base de données :
from fastapi import FastAPI, Depends
from sqlalchemy.orm import Session as DBSession
from database import TacheDB, engine, SessionLocal
app = FastAPI(title="API Tùches avec base de données")
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@app.post("/taches")
def creer_tache(tache: Tache, db: DBSession = Depends(get_db)):
db_tache = TacheDB(**tache.model_dump())
db.add(db_tache)
db.commit()
db.refresh(db_tache)
return db_tacheLes données persistent désormais entre les redémarrages du serveur.
Tester ton API
FastAPI gĂ©nĂšre automatiquement une interface Swagger Ă l’adresse /docs. Tu peux y tester chaque endpoint :
- Crée une tùche avec POST /taches
- Liste les tĂąches avec GET /taches
- RécupÚre une tùche spécifique avec GET /taches/1
- Modifie-la avec PUT /taches/1
- Supprime-la avec DELETE /taches/1
Tu peux aussi utiliser curl en ligne de commande :
curl -X POST "http://localhost:8000/taches" \
-H "Content-Type: application/json" \
-d '{"titre": "Apprendre FastAPI", "terminee": false}'
Et aprÚs ? Les prochaines étapes
Tu viens de construire une API REST complÚte avec FastAPI. Félicitations ! Voici quelques pistes pour aller plus loin :
- Ajoute l’authentification avec OAuth2 et JWT (FastAPI le supporte nativement)
- Déploie ton API sur un serveur (Railway, Render, ou un VPS avec Docker + Nginx)
- Ajoute des tests avec pytest et le client TestClient de FastAPI
- Connecte une base PostgreSQL pour passer en production
- Consulte la documentation officielle de FastAPI pour explorer toutes les fonctionnalités avancées
L’avantage de FastAPI, c’est que tu peux commencer petit et ajouter des fonctionnalitĂ©s au fur et Ă mesure sans réécrire tout ton code. La courbe d’apprentissage est douce, mais le framework t’accompagne jusqu’Ă des architectures complexes.
FastAPI est un framework puissant, mais pour aller plus loin â authentification, dĂ©ploiement, tests avancĂ©s â un guide fait toute la diffĂ©rence. Si tu veux apprendre Ă construire des APIs robustes avec un vrai suivi, je t’accompagne pas Ă pas dans mes formations. On travaille sur des projets concrets, du code clean, et tu repars avec des compĂ©tences directement exploitables.
Tu veux aller plus loin avec FastAPI et Python ? DĂ©couvre ma formation Python complĂšte â du dĂ©butant au dĂ©ploiement, avec un vrai suivi pas Ă pas.