Zum Inhalt

Merkmale

FastAPI Merkmale

FastAPI ermöglicht Ihnen folgendes:

Basiert auf offenen Standards

  • OpenAPI f√ľr API-Erstellung, zusammen mit Deklarationen von Pfad Operationen, Parameter, Nachrichtenrumpf-Anfragen (englisch: body request), Sicherheit, etc.
  • Automatische Dokumentation der Datenentit√§ten mit dem JSON Schema (OpenAPI basiert selber auf dem JSON Schema).
  • Entworfen auf Grundlage dieser Standards nach einer sorgf√§ltigen Studie, statt einer nachtr√§glichen Schicht √ľber diesen Standards.
  • Dies erm√∂glicht automatische Quellcode-Generierung auf Benutzerebene in vielen Sprachen.

Automatische Dokumentation

Mit einer interaktiven API-Dokumentation und explorativen webbasierten Benutzerschnittstellen. Da FastAPI auf OpenAPI basiert, gibt es hierzu mehrere Optionen, wobei zwei standartmäßig vorhanden sind.

  • Swagger UI, bietet interaktive Exploration: testen und rufen Sie ihre API direkt vom Webbrowser auf.

Swagger UI Interaktion

  • Alternative API-Dokumentation mit ReDoc.

ReDoc

Nur modernes Python

Alles basiert auf Python 3.6 Typ-Deklarationen (dank Pydantic). Es muss keine neue Syntax gelernt werden, nur standardisiertes modernes Python.

Wenn Sie eine kurze, zweimin√ľtige, Auffrischung in der Benutzung von Python Typ-Deklarationen ben√∂tigen (auch wenn Sie FastAPI nicht nutzen), schauen Sie sich diese kurze Einf√ľhrung an (Englisch): Python Types{.internal-link target=_blank}.

Sie schreiben Standard-Python mit Typ-Deklarationen:

from typing import List, Dict
from datetime import date

from pydantic import BaseModel

# Deklariere eine Variable als str
# und bekomme Editor-Unterst√ľtung innerhalb der Funktion
def main(user_id: str):
    return user_id


# Ein Pydantic model
class User(BaseModel):
    id: int
    name: str
    joined: date

Dies kann nun wiefolgt benutzt 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:

√úbergebe die Schl√ľssel und die zugeh√∂rigen Werte des second_user_data Datenw√∂rterbuches direkt als Schl√ľssel-Wert Argumente, √§quivalent zu: User(id=4, name="Mary", joined="2018-11-30")

Editor Unterst√ľtzung

FastAPI wurde so entworfen, dass es einfach und intuitiv zu benutzen ist; alle Entscheidungen wurden auf mehreren Editoren getestet (sogar vor der eigentlichen Implementierung), um so eine best mögliche Entwicklererfahrung zu gewährleisten.

In der letzen Python Entwickler Umfrage stellte sich heraus, dass die meist genutzte Funktion die "Autovervollständigung" ist.

Die gesamte Struktur von FastAPI soll dem gerecht werden. Autovervollst√§ndigung funktioniert √ľberall.

Sie m√ľssen selten in die Dokumentation schauen.

So kann ihr Editor Sie unterst√ľtzen:

editor support

editor support

Sie bekommen Autovervollst√§ndigung an Stellen, an denen Sie dies vorher nicht f√ľr m√∂glich gehalten h√§tten. Zum Beispiel der price Schl√ľssel aus einem JSON Datensatz (dieser k√∂nnte auch verschachtelt sein) aus einer Anfrage.

Hierdurch werden Sie nie wieder einen falschen Schl√ľsselnamen benutzen und sparen sich l√§stiges Suchen in der Dokumentation, um beispielsweise herauszufinden ob Sie username oder user_name als Schl√ľssel verwenden.

Kompakt

FastAPI nutzt f√ľr alles sensible Standard-Einstellungen, welche optional √ľberall konfiguriert werden k√∂nnen. Alle Parameter k√∂nnen ganz genau an Ihre Bed√ľrfnisse angepasst werden, sodass sie genau die API definieren k√∂nnen, die sie brachen.

Aber standartmäß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.
    • Zeichenketten (str), mit definierter minimaler und maximaler L√§nge.
    • Zahlen (int, float) mit minimaler und maximaler Gr√∂√üe, usw.
  • Validierung f√ľr ungew√∂gnliche Typen, wie:

    • URL.
    • Email.
    • UUID.
    • ... und andere.

Die gesamte Validierung √ľbernimmt das etablierte und robuste Pydantic.

Sicherheit und Authentifizierung

Sicherheit und Authentifizierung integriert. Ohne einen Kompromiss aufgrund einer Datenbank oder den Datenentitäten.

Unterst√ľtzt alle von OpenAPI definierten Sicherheitsschemata, hierzu geh√∂ren:

  • HTTP Basis Authentifizierung.
  • OAuth2 (auch mit JWT Zugriffstokens). Schauen Sie sich hierzu dieses Tutorial an: OAuth2 mit JWT.
  • API Schl√ľssel in:
    • Kopfzeile (HTTP Header).
    • Anfrageparametern.
    • Cookies, etc.

Zusätzlich gibt es alle Sicherheitsfunktionen von Starlette (auch session cookies).

Alles wurde als wiederverwendbare Werkzeuge und Komponenten geschaffen, die einfach in ihre Systeme, Datenablagen, relationale und nicht-relationale Datenbanken, ..., integriert werden können.

Einbringen von Abhängigkeiten (meist: Dependency Injection)

FastAPI enthält ein extrem einfaches, aber extrem mächtiges Dependency Injection System.

  • Selbst Abh√§ngigkeiten k√∂nnen Abh√§ngigkeiten haben, woraus eine Hierachie oder ein "Graph" von Abh√§ngigkeiten entsteht.
  • Automatische Umsetzung durch FastAPI.
  • Alle abh√§ngigen Komponenten k√∂nnten Daten von Anfragen, Erweiterungen der Pfadoperations-Einschr√§nkungen und der automatisierten Dokumentation ben√∂tigen.
  • Automatische Validierung selbst f√ľr Pfadoperationen-Parameter, die in den Abh√§ngigkeiten definiert wurden.
  • Unterst√ľtz komplexe Benutzerauthentifizierungssysteme, mit Datenbankverbindungen, usw.
  • Keine Kompromisse bei Datenbanken, Eingabemasken, usw. Sondern einfache Integration von allen.

Unbegrenzte Erweiterungen

Oder mit anderen Worten, sie werden nicht benötigt. Importieren und nutzen Sie Quellcode nach Bedarf.

Jede Integration wurde so entworfen, dass sie einfach zu nutzen ist (mit Abh√§ngigkeiten), sodass Sie eine Erweiterung f√ľr Ihre Anwendung mit nur zwei Zeilen an Quellcode implementieren k√∂nnen. Hierbei nutzen Sie die selbe Struktur und Syntax, wie bei Pfadoperationen.

Getestet

  • 100% Testabdeckung.
  • 100% Typen annotiert.
  • Verwendet in Produktionsanwendungen.

Starlette's Merkmale

FastAPI ist vollkommen kompatibel (und basiert auf) Starlette. Das bedeutet, auch ihr eigner Starlett Quellcode funktioniert.

FastAPI ist eigentlich eine Unterklasse von Starlette. Wenn sie also bereits Starlette kennen oder benutzen, können Sie das meiste Ihres Wissen direkt anwenden.

Mit FastAPI bekommen Sie viele von Starlette's Funktionen (da FastAPI nur Starlette auf Steroiden ist):

  • Stark beeindruckende Performanz. Es ist eines der schnellsten Python frameworks, auf Augenh√∂he mit NodeJS und Go.
  • WebSocket-Unterst√ľtzung.
  • GraphQL-Unterst√ľtzung.
  • Hintergrundaufgaben im selben Prozess.
  • Ereignisse f√ľr das Starten und Herunterfahren.
  • Testclient basierend auf requests.
  • CORS, GZip, statische Dateien, Antwortfluss.
  • Sitzungs und Cookie Unterst√ľtzung.
  • 100% Testabdeckung.
  • 100% Typen annotiert.

Pydantic's Merkmale

FastAPI ist vollkommen kompatibel (und basiert auf) Pydantic. Das bedeutet, auch jeder zusätzliche Pydantic Quellcode funktioniert.

Verf√ľgbar sind ebenso externe auf Pydantic basierende Bibliotheken, wie ORMs, ODMs f√ľr Datenbanken.

Daher können Sie in vielen Fällen das Objekt einer Anfrage direkt zur Datenbank schicken, weil alles automatisch validiert wird.

Das selbe gilt auch f√ľr die andere Richtung: Sie k√∂nnen jedes Objekt aus der Datenbank direkt zum Klienten schicken.

Mit FastAPI bekommen Sie alle Funktionen von Pydantic (da FastAPI f√ľr die gesamte Datenverarbeitung Pydantic nutzt):

  • Kein Kopfzerbrechen:
    • Sie m√ľssen keine neue Schemadefinitionssprache lernen.
    • Wenn Sie mit Python's Typisierung arbeiten k√∂nnen, k√∂nnen Sie auch mit Pydantic arbeiten.
  • Gutes Zusammenspiel mit Ihrer/Ihrem IDE/linter/Gehirn:
    • Weil Datenstrukturen von Pydantic einfach nur Instanzen ihrer definierten Klassen sind, sollten Autovervollst√§ndigung, Linting, mypy und ihre Intuition einwandfrei funktionieren.
  • Schnell:
    • In Vergleichen ist Pydantic schneller als jede andere getestete Bibliothek.
  • Validierung von komplexen Strukturen:
    • Benutzung von hierachischen Pydantic Schemata, Python typing‚Äôs List und Dict, etc.
    • Validierungen erlauben klare und einfache Datenschemadefinition, √ľberpr√ľft und dokumentiert als JSON Schema.
    • Sie k√∂nnen stark verschachtelte JSON Objekte haben und diese sind trotzdem validiert und annotiert.
  • Erweiterbar:
    • Pydantic erlaubt die Definition von eigenen Datentypen oder sie k√∂nnen die Validierung mit einer validator dekorierten Methode erweitern..
  • 100% Testabdeckung.