Merkmale¶
FastAPI Merkmale¶
FastAPI ermöglicht Ihnen Folgendes:
Basiert auf offenen Standards¶
- OpenAPI fĂŒr die Erstellung von APIs, inklusive Deklarationen von Pfad-Operationen, Parametern, Requestbodys, Sicherheit, usw.
- Automatische Dokumentation der Datenmodelle mit JSON Schema (da OpenAPI selbst auf JSON Schema basiert).
- Um diese Standards herum entworfen, nach sorgfĂ€ltigem Studium. Statt einer nachtrĂ€glichen Schicht darĂŒber.
- Dies ermöglicht auch automatische Client-Code-Generierung in vielen Sprachen.
Automatische Dokumentation¶
Interaktive API-Dokumentation und erkundbare Web-BenutzeroberflĂ€chen. Da das Framework auf OpenAPI basiert, gibt es mehrere Optionen, zwei sind standardmĂ€Ăig vorhanden.
- Swagger UI, bietet interaktive Erkundung, testen und rufen Sie Ihre API direkt im Webbrowser auf.

- Alternative API-Dokumentation mit ReDoc.

Nur modernes Python¶
Alles basiert auf Standard-Python-Typdeklarationen (dank Pydantic). Es muss keine neue Syntax gelernt werden, nur standardisiertes modernes Python.
Wenn Sie eine zweiminĂŒtige Auffrischung benötigen, wie man Python-Typen verwendet (auch wenn Sie FastAPI nicht benutzen), schauen Sie sich das kurze Tutorial an: EinfĂŒhrung in Python-Typen.
Sie schreiben Standard-Python mit Typen:
from datetime import date
from pydantic import BaseModel
# Deklarieren Sie eine Variable als ein str
# und bekommen Sie Editor-UnterstĂŒtzung innerhalb der Funktion
def main(user_id: str):
return user_id
# Ein Pydantic-Modell
class User(BaseModel):
id: int
name: str
joined: date
Das kann nun wie folgt verwendet werden:
my_user: User = User(id=3, name="John Doe", joined="2018-07-19")
second_user_data = {
"id": 4,
"name": "Mary",
"joined": "2018-11-30",
}
my_second_user: User = User(**second_user_data)
Info
**second_user_data bedeutet:
Nimm die SchlĂŒssel-Wert-Paare des second_user_data Dicts und ĂŒbergebe sie direkt als SchlĂŒsselwort-Argumente. Ăquivalent zu: User(id=4, name="Mary", joined="2018-11-30")
Editor UnterstĂŒtzung¶
Das ganze Framework wurde so entworfen, dass es einfach und intuitiv zu benutzen ist; alle Entscheidungen wurden auf mehreren Editoren getestet, sogar vor der Implementierung, um die bestmögliche Entwicklererfahrung zu gewÀhrleisten.
In den Python-Entwickler-Umfragen wird klar, dass die meist genutzte Funktion die âAutovervollstĂ€ndigungâ ist.
Das gesamte FastAPI-Framework ist darauf ausgelegt, das zu erfĂŒllen. AutovervollstĂ€ndigung funktioniert ĂŒberall.
Sie werden selten noch mal in der Dokumentation nachschauen mĂŒssen.
So kann Ihr Editor Sie unterstĂŒtzen:

- in PyCharm:

Sie bekommen sogar AutovervollstĂ€ndigung an Stellen, an denen Sie dies vorher nicht fĂŒr möglich gehalten hĂ€tten. Zum Beispiel der price SchlĂŒssel in einem JSON Datensatz (dieser könnte auch verschachtelt sein), der aus einem Request kommt.
Nie wieder falsche SchlĂŒsselnamen tippen, Hin und HerhĂŒpfen zwischen der Dokumentation, Hoch- und Runterscrollen, um herauszufinden, ob es username oder user_name war.
Kompakt¶
Es gibt fĂŒr alles sensible Defaultwerte, mit optionaler Konfiguration ĂŒberall. Alle Parameter können feinjustiert werden, damit sie tun, was Sie benötigen, und die API definieren, die Sie brauchen.
Aber standardmĂ€Ăig âfunktioniert einfach allesâ.
Validierung¶
-
Validierung fĂŒr die meisten (oder alle?) Python-Datentypen, hierzu gehören:
- JSON Objekte (
dict). - JSON Listen (
list), die den Typ ihrer Elemente definieren. - Strings (
str) mit definierter minimaler und maximaler LĂ€nge. - Zahlen (
int,float) mit Mindest- und Maximalwerten, usw.
- JSON Objekte (
-
Validierung fĂŒr mehr exotische Typen, wie:
- URL.
- E-Mail.
- UUID.
- ... und andere.
Die gesamte Validierung ĂŒbernimmt das gut etablierte und robuste Pydantic.
Sicherheit und Authentifizierung¶
Sicherheit und Authentifizierung sind integriert. Ohne Kompromisse bei Datenbanken oder Datenmodellen.
Alle in OpenAPI definierten Sicherheitsschemas, inklusive:
- HTTP Basic.
- OAuth2 (auch mit JWT Tokens). Siehe dazu das Tutorial zu OAuth2 mit JWT.
- API SchlĂŒssel in:
- Headern.
- Query-Parametern.
- Cookies, usw.
ZusÀtzlich alle Sicherheitsfunktionen von Starlette (inklusive Session Cookies).
Alles als wiederverwendbare Tools und Komponenten gebaut, die einfach in Ihre Systeme, Datenspeicher, relationale und nicht-relationale Datenbanken, usw., integriert werden können.
Dependency Injection¶
FastAPI enthÀlt ein extrem einfach zu verwendendes, aber extrem mÀchtiges Dependency Injection System.
- Selbst AbhĂ€ngigkeiten können AbhĂ€ngigkeiten haben, woraus eine Hierarchie oder ein âGraphâ von AbhĂ€ngigkeiten entsteht.
- Alles automatisch gehandhabt durch das Framework.
- Alle AbhÀngigkeiten können Daten von Requests anfordern und das Verhalten von Pfadoperationen und der automatisierten Dokumentation modifizieren.
- Automatische Validierung selbst fĂŒr solche Parameter von Pfadoperationen, welche in AbhĂ€ngigkeiten definiert sind.
- UnterstĂŒtzung fĂŒr komplexe Authentifizierungssysteme, Datenbankverbindungen, usw.
- Keine Kompromisse bei Datenbanken, Frontends, usw., sondern einfache Integration mit allen.
Unbegrenzte Erweiterungen¶
Oder mit anderen Worten, sie werden nicht benötigt. Importieren und nutzen Sie den Code, den Sie brauchen.
Jede Integration wurde so entworfen, dass sie so einfach zu nutzen ist (mit AbhĂ€ngigkeiten), dass Sie eine Erweiterung fĂŒr Ihre Anwendung mit nur zwei Zeilen Code erstellen können. Hierbei nutzen Sie die gleiche Struktur und Syntax, wie bei Pfadoperationen.
Getestet¶
- 100 % Testabdeckung.
- 100 % Typen annotiert.
- Verwendet in Produktionsanwendungen.
Starlette Merkmale¶
FastAPI ist vollkommen kompatibel (und basiert auf) Starlette. Das bedeutet, wenn Sie eigenen Starlette Quellcode haben, funktioniert der.
FastAPI ist tatsÀchlich eine Unterklasse von Starlette. Wenn Sie also bereits Starlette kennen oder benutzen, das meiste funktioniert genau so.
Mit FastAPI bekommen Sie alles von Starlette (da FastAPI nur Starlette auf Steroiden ist):
- Schwer beeindruckende Performanz. Es ist eines der schnellsten Python-Frameworks, auf Augenhöhe mit NodeJS und Go.
- WebSocket-UnterstĂŒtzung.
- Hintergrundtasks im selben Prozess.
- Startup- und Shutdown-Events.
- Testclient basierend auf HTTPX.
- CORS, GZip, statische Dateien, Responses streamen.
- Sitzungs- und Cookie-UnterstĂŒtzung.
- 100 % Testabdeckung.
- 100 % Typen annotierte Codebasis.
Pydantic Merkmale¶
FastAPI ist vollkommen kompatibel (und basiert auf) Pydantic. Das bedeutet, wenn Sie eigenen Pydantic Quellcode haben, funktioniert der.
Inklusive externer Bibliotheken, die auf Pydantic basieren, wie ORMs, ODMs fĂŒr Datenbanken.
Daher können Sie in vielen FÀllen das Objekt eines Requests direkt zur Datenbank schicken, weil alles automatisch validiert wird.
Das gleiche gilt auch fĂŒr die andere Richtung: Sie können in vielen FĂ€llen das Objekt aus der Datenbank direkt zum Client senden.
Mit FastAPI bekommen Sie alle Funktionen von Pydantic (da FastAPI fĂŒr die gesamte Datenverarbeitung Pydantic nutzt):
- Kein Kopfzerbrechen:
- Keine neue Schemadefinition-Mikrosprache zu lernen.
- Wenn Sie Pythons Typen kennen, wissen Sie, wie man Pydantic verwendet.
- Gutes Zusammenspiel mit Ihrer/Ihrem IDE/Linter/Gehirn:
- Weil Pydantics Datenstrukturen einfach nur Instanzen ihrer definierten Klassen sind; AutovervollstÀndigung, Linting, mypy und Ihre Intuition sollten alle einwandfrei mit Ihren validierten Daten funktionieren.
- Validierung von komplexen Strukturen:
- Benutzung von hierarchischen Pydantic-Modellen, Python-
typingsListundDict, etc. - Die Validierer erlauben es, komplexe Datenschemen klar und einfach zu definieren, ĂŒberprĂŒft und dokumentiert als JSON Schema.
- Sie können tief verschachtelte JSON Objekte haben, die alle validiert und annotiert sind.
- Benutzung von hierarchischen Pydantic-Modellen, Python-
- Erweiterbar:
- Pydantic erlaubt die Definition von eigenen Datentypen oder sie können die Validierung mit einer
validator-dekorierten Methode im Modell erweitern.
- Pydantic erlaubt die Definition von eigenen Datentypen oder sie können die Validierung mit einer
- 100 % Testabdeckung.