4. Exposer une API FastAPI
Objectif : installer uniquement FastAPI puis exposer un use case par une route
typée, sans dupliquer le préfixe de version ni créer une feature implicite.
| Bash |
|---|
| arclith-cli add-adapter \
--capability api \
--adapter fastapi \
--param host=127.0.0.1 \
--param port=8120 \
--param reload=true \
--yes
arclith-cli expose-usecase CreateTodo \
--via fastapi \
--feature todos \
--path /v1/todos \
--method POST \
--status-code 201
|
La première commande ajoute arclith[fastapi], la configuration et le socle
du transport. La seconde crée uniquement la feature todos et le binding du
use case existant.
Structure attendue
| Text Only |
|---|
| adapters/inbound/fastapi/
├── README.md
├── register.py
├── bindings_generated.py
├── dependencies.py
├── errors.py
├── contracts/
├── middleware/
└── routers/
└── v1/
├── router.py
└── todos/
├── README.md
├── router.py
├── schemas.py
├── mappers.py
├── presenters.py
├── openapi.py
└── routes/create_todo.py
|
La chaîne d'inclusion est unique :
| Text Only |
|---|
| main.build_api
-> fastapi/register.py
-> routers/v1/router.py # propriétaire du préfixe /v1
-> routers/v1/todos/router.py
-> routes/create_todo.py # chemin local /todos
|
Les DTO de transport restent sous FastAPI. La route mappe la requête vers le
CreateTodoCommand, appelle CreateTodoPort, puis présente un
CreateTodoResponse. Elle ne construit pas de repository et ne contient pas de
règle métier.
Sous-étapes :
- Contrats et schémas
- Binding HTTP
- Router et composition
- Tests de l'API