Quickstart API¶
Créer un service, ajouter explicitement FastAPI, puis exposer un cas d'usage.
init ne crée aucun transport. add-adapter installe l'extra arclith[fastapi] et le
blueprint FastAPI complet uniquement lorsque l'API
est choisie.
Prérequis¶
- Python 3.13 ;
uv.
Installer d'abord arclith-cli comme outil global géré par uv, puis vérifier que la commande est
disponible :
Étapes¶
Le service est déjà fonctionnel avec les seuls champs techniques de Entity :
CreateTodoUseCase construit l'entité, la persiste via Repository[Todo] et la
composition générée l'injecte dans le binding. Ajouter ensuite les mêmes champs
métier validés à Todo et CreateTodoCommand. Une composition plus riche qu'un
repository unique doit rester explicite dans l'infrastructure.
Lancer l'API :
| Bash | |
|---|---|
Le main.py généré fournit l'API à Uvicorn sous forme de factory importable. Le réglage reload
de config/adapters/inbound/fastapi.yaml reste ainsi effectif en développement, sans importer
FastAPI avant l'ajout explicite de l'adapter.
Dans un second terminal :
| Bash | |
|---|---|
Résultat¶
- Swagger UI s'ouvre sur
http://127.0.0.1:8765/docs. - OpenAPI contient exactement une opération
POST /v1/todos. - La création retourne
201avecuuid, dates d'audit,versionetis_deleted, même sans champ métier supplémentaire.
Variante CRUD Complète¶
Pour exposer le cycle complet plutôt qu'un seul use case :
OpenAPI contient alors les cinq opérations CRUD. Les réponses de création,
mise à jour et suppression restent typées (201, 200, 200) ; les erreurs
d'item absent et de version obsolète sont déclarées en 404 et 409.
L'adapter FastAPI doit précéder la projection et aucun repository durable n'est
choisi implicitement. Les schémas de requête reprennent les champs métier et
leurs contraintes Pydantic tels qu'ils existaient au moment de
add-blueprint ; POST respecte les champs requis et PATCH autorise leur
omission sans accepter une valeur invalide.
Erreur Fréquente¶
Si l'API ne répond pas, vérifier que le port choisi est libre et que
config/adapters/inbound/fastapi.yaml contient le même port. Les endpoints de
probe ne sont présents qu'après ajout explicite de la capability probe.
Média¶
Média à produire
Capture : Swagger UI ouvert.
Vidéo : création du projet puis appel /health.
Suite¶
Lire MCP, puis api/fastapi. Pour exporter les traces et métriques sans modifier le service, suivre OpenTelemetry de bout en bout.