Depends ·
Sub-Dependencies ·
yield ·
Path/Query/Header ·
Class Dependencies ·
Global Dependencies
Dependency Injection (DI) ist ein zentrales Feature von FastAPI. Es ermöglicht die Wiederverwendung von Logik, die saubere Trennung von Verantwortlichkeiten und das einfache Testen von Anwendungen.
Depends() ist die zentrale Funktion für Dependency Injection in FastAPI. Es injiziert den Rückgabewert einer Callable als Parameter in Ihre Endpunkt-Funktion.
async def als auch def sein. FastAPI entscheidet automatisch, ob sie im Event-Loop oder im Thread-Pool ausgeführt werden.
Sub-Dependencies sind Dependencies, die selbst wieder andere Dependencies verwenden. FastAPI löst die gesamte Kette automatisch auf.
yield in Dependencies ermöglicht die Verwaltung von Ressourcen (Datenbankverbindungen, Datei-Handles). Der Code nach yield wird als Cleanup ausgeführt.
yield-Dependencies werden automatisch als Context Manager behandelt. Der Cleanup-Code wird auch bei Exceptions ausgeführt – perfekt für Datenbankverbindungen.
Path, Query, Header sind Hilfsfunktionen, um Dependencies mit Request-Daten zu definieren – mit automatischer Validierung und Typüberprüfung.
ge, le, regex, etc.) direkt in Query(), Path() und Header() – das spart zusätzliche Validierungslogik.
Class Dependencies bieten eine objektorientierte Möglichkeit, Dependencies zu definieren – besonders nützlich für wiederverwendbare Komponenten mit Zustand.
Globale Dependencies werden für jeden Endpunkt der Anwendung ausgeführt – ideal für Logging, Authentifizierung oder Request-Tracking.
yield die bessere Wahl.
Depends
Sub-Dep
yield
Query
Class
Global
Depends(get_db) ·
async def get_db(): yield db; db.close() ·
FastAPI(dependencies=[Depends(auth)])