Bases de Flask et FastAPI
Introduction
Flask et FastAPI sont deux frameworks web populaires en Python. Ils permettent de créer rapidement des applications web et des API.
Fonctionnalité | Flask | FastAPI |
---|---|---|
Type | Micro-framework web | Framework web moderne et performant |
Vitesse | Plus lent (synchronisé) | Plus rapide (asynchrone par défaut) |
Typage | Optionnel | Utilisation poussée des types (Pydantic) |
Documentation | Manuelle ou via extensions | Générée automatiquement (Swagger/OpenAPI) |
Bases de Flask
Installation
pip install flask
Exemple minimal
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Bonjour Flask !"
if __name__ == '__main__':
app.run(debug=True)
Lancer l’application
python app.py
L’application tourne sur http://127.0.0.1:5000
Ajouter des paramètres
@app.route('/hello/<name>')
def hello(name):
return f"Bonjour, {name} !"
Bases de FastAPI
Installation
pip install fastapi uvicorn
Exemple minimal
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Bonjour FastAPI !"}
Lancer l’application
uvicorn app:app --reload
L’application tourne sur http://127.0.0.1:8000
Documentation automatique
FastAPI génère automatiquement deux interfaces :
- Swagger UI : http://127.0.0.1:8000/docs
- ReDoc : http://127.0.0.1:8000/redoc
Gérer les paramètres
Paramètres d’URL et de requête (FastAPI)
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
Corps de requête (FastAPI)
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
@app.post("/items/")
def create_item(item: Item):
return {"item": item}
Quand utiliser quoi ?
- Utilisez Flask si :
- Vous cherchez la simplicité et un contrôle total
- Vous êtes à l’aise avec WSGI
- Vous développez une petite application ou un projet existant
- Utilisez FastAPI si :
- Vous avez besoin de performance et scalabilité
- Vous voulez du typage fort et de la validation automatique
- Vous créez une API moderne (ex. frontend/backend séparés)
Ressources utiles
- Flask : https://flask.palletsprojects.com/fr/
- FastAPI : https://fastapi.tiangolo.com/fr/
- Vidéo : FastAPI vs Flask - Une comparaison