Premiers pas avec FastAPI Assez consommé : passons derrière le comptoir. Dans ce chapitre, on construit une API en Python avec FastAPI . C'est un framework « tout compris » : à partir de vos fonctions et de leurs types, il gère la validation des données (avec Pydantic) et génère tout seul le contrat OpenAPI et la documentation. Installation On crée un dossier pour le projet et un environnement virtuel ( .venv ) : les bibliothèques s'installent dedans, pas dans le Python du système. Choisissez votre système. Windows (PowerShell) mkdir mon-api; cd mon-api py -m venv .venv .venv\Scripts\Activate.ps1 pip install "fastapi[standard]" Si Activate.ps1 est refusé (« l'exécution de scripts est désactivée »), lancez une fois Set-ExecutionPolicy -Scope CurrentUser RemoteSigned , puis réessayez. Dans l'invite de commandes classique (cmd), activez avec .venv\Scripts\activate.bat . macOS mkdir mon-api && cd mon-api python3 -m venv .venv source .venv/bin/activate pip install "fastapi[standard]" Si macOS propose d'installer les « outils de ligne de commande » au premier python3 , acceptez, puis relancez la commande. Linux mkdir mon-api && cd mon-api python3 -m venv .venv source .venv/bin/activate pip install "fastapi[standard]" Sous Ubuntu/Debian, si python3 -m venv affiche « ensurepip is not available » : sudo apt install python3-venv , supprimez le dossier .venv raté ( rm -rf .venv ), puis recommencez. Une fois l'environnement activé, l'invite commence par (.venv) . Il faut le réactiver dans chaque nouveau terminal . Si fastapi : commande introuvable , ou si pip répond externally-managed-environment , c'est que l'environnement n'est pas activé. Premier endpoint # main.py from fastapi import FastAPI app = FastAPI(title="Mon API") @app.get("/v1/health") def health(): return {"status": "ok"} Lancer le serveur # Sur le port 8000, redémarre à chaque modification du code fastapi dev main.py Et on teste, évidemment, avec curl : curl -i http://localhost:8000/v1/health HTTP/1.1 200 OK Content-Type: application/json {"status":"ok"} Le bonus de FastAPI Ouvrez http://localhost:8000/docs : FastAPI a déjà généré le contrat OpenAPI et une documentation Swagger UI. Le contrat brut est sur /openapi.json , et une version Redoc sur /redoc . Ce contrat généré est pratique, mais il décrit ce que fait le code, pas ce que le client attend. Le vôtre, vous l'avez écrit avant le code… n'est-ce pas ?