FastAPI Endpoint — DataPilot Conventions
Structure obligatoire
Tout endpoint doit suivre ce pattern :
- •Router dans
app/routers/<resource>.py - •Logique métier dans
app/services/<resource>_service.py - •Schemas Pydantic dans
app/schemas/<resource>.py - •Model SQLAlchemy dans
app/models/<resource>.py
Règles critiques
- •TOUJOURS filtrer par
current_user.tenant_id(multi-tenant obligatoire) - •TOUJOURS typer les paramètres et le retour
- •TOUJOURS utiliser les dépendances via
app/core/dependencies.py - •Préfixe API :
/api/v1/<resource>
Template endpoint
python
@router.get("/{id}", response_model=ResourceSchema)
async def get_resource(
id: UUID,
current_user: User = Depends(get_current_user),
db: Session = Depends(get_db)
):
service = ResourceService(db)
return service.get_by_id(id, tenant_id=current_user.tenant_id)
Checklist avant de valider
- • tenant_id filtré
- • Schema Pydantic défini
- • Route enregistrée dans main.py
- • Test unitaire créé