Skip to content

FastAPI: Python Webentwicklung neu definiert

Updated on

Die Reputation von Python als Programmiersprache für die Webentwicklung wurde durch beeindruckende Frameworks wie Django, Flask, Falcon und viele andere verstärkt. Dank des Status von Python als Schlüsselsprache für maschinelles Lernen eignet es sich hervorragend zum Verpacken von Modellen und zur Bereitstellung von Services. Ein relativ neuer Herausforderer transformiert diesen Bereich jedoch - FastAPI. Es nimmt Inspiration von seinen Vorgängern und verfeinert und verbessert sie, indem es eine Vielzahl aufregender Funktionen mitbringt.

FastAPI: Ein neues Paradigma in der Python Webframeworks

FastAPI hat sich trotz seiner Neuheit einen Namen in der Python-Community gemacht, da es ein bemerkenswertes Gleichgewicht zwischen Funktionalität und Entwicklerfreiheit bietet. Es ähnelt Flask in seiner Philosophie, aber mit einem gesünderen Gleichgewicht. Dieses neue Webframework profitiert nicht nur von den Stärken seiner Vorgänger, sondern behebt auch deren Schwächen.

Eines der stärksten Verkaufsargumente von FastAPI ist seine simple und dennoch effektive Schnittstelle. Ihr innovativer Ansatz zur Definition von Schemas mit Pydantic, einer weiteren leistungsstarken Python-Bibliothek zur Datenvalidierung, reduziert die Arbeitsbelastung der Entwickler. Diese Funktion, zusammen mit dem automatischen Fehlerbehandlungsmechanismus, machen FastAPI zu einem äußerst entwicklerfreundlichen Framework.

from fastapi import FastAPI
from pydantic import BaseModel
 
class User(BaseModel):
 email: str
 password: str
 
app = FastAPI()
 
@app.post("/login")
def login(user: User):
 # Verarbeitung des Logins
 return {"msg": "Anmeldung erfolgreich"}

Dieses einfache Beispiel zeigt die Benutzerfreundlichkeit von FastAPI. Sie können Ihre FastAPI-App mit Uvicorn starten und sie ist bereit, Anfragen sofort zu verarbeiten.

Der asynchrone Vorteil von FastAPI

FastAPI führt den Weg in der Beseitigung eines der größten Nachteile von Python WSGI-Webframeworks: ihre Unfähigkeit, Anfragen asynchron zu verarbeiten. Mit der Fähigkeit von FastAPI, das ASGI von Python auszunutzen, erreicht es die Leistungsfähigkeit von Webframeworks wie Node.js oder Go. Entwickler können Endpunkte einfach mit dem 'async'-Schlüsselwort deklarieren und dadurch die Leistungsfähigkeit der App verbessern.

@app.post("/")
async def endpoint():
 # Ausführung von asynchronen Funktionen
 return {"msg": "FastAPI ist fantastisch!"}

Vereinfachung von Dependency Injections mit FastAPI

Dank des innovativen Ansatzes von FastAPI waren Dependency Injections noch nie so einfach. Es bietet ein integriertes Injektionssystem, das das problemlose Verwalten von Abhängigkeiten ermöglicht. Die Laufzeitauswertung von Abhängigkeiten in FastAPI vereinfacht das Testen und ermöglicht ausgefeilte Überprüfungen, wodurch die Benutzerauthentifizierung und ähnliche Vorgänge zum Kinderspiel werden.

from fastapi import FastAPI, Depends
from pydantic import BaseModel
 
class Comment(BaseModel):
 username: str
 content: str
 
app = FastAPI()
 
database = {
 "articles": {
 1: {
 "title": "Top 3 Gründe, jetzt mit FastAPI zu beginnen",
 "comments": []
 }
 }
}
 
def get_database():
 return database
 
@app.post("/articles/{article_id}/comments")
def post_comment(article_id: int, comment: Comment, database = Depends(get_database)):
 database["articles"][article_id]["comments"].append(comment)
 return {"msg": "Kommentar veröffentlicht!"}

Einfache Datenbankintegration

FastAPI schränkt Ihre Wahl der Datenbank nicht ein. Egal ob SQL, MongoDB oder Redis, Sie können Ihre bevorzugte Datenbank problemlos zu Ihrem Tech-Stack hinzufügen, im Gegensatz zu manchen Frameworks wie Django. FastAPI vereinfacht die Integration und lässt die Wahl der Datenbank, anstatt des Frameworks, den Arbeitsaufwand bestimmen.

from fastapi import FastAPI, Depends
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
 
engine = create_engine("sqlite:///./database.db")
Session = sessionmaker(bind=engine)
 
def get_db():
 return Session()
 
app = FastAPI()
 
@app.get("/")
def an_endpoint_using_sql(db = Depends(get_db)):
 # SQLAlchemy in Aktion
 return {"msg": "Operation erfolgreich!"}

Sie können auf das FastAPI-Repository auf GitHub hier (opens in a new tab) zugreifen.

GraphQL unterstützen und hervorragende Dokumentation

Die Kompatibilität von FastAPI mit GraphQL ist ein weiteres großartiges Feature. Bei komplexen Datenmodellen kann sich REST als herausfordernd erweisen. Hier kommt GraphQL ins Spiel, nahtlos in FastAPI und Graphene integriert, was die Anpassungen auf der Frontend-Seite reduziert, die sonst eine Aktualisierung des Endpunkt-Schemas erfordern würden.

FastAPI bietet auch eine ausgezeichnete Dokumentation, die zu seiner Attraktivität beiträgt. Obwohl es jünger als Django oder Flask ist, kann es in Bezug auf die Qualität der Dokumentation mit ihnen mithalten.

Schlussfolgerung

Zusammenfassend gesagt: Ob Sie ein schnelles, leichtgewichtiges Framework für Ihre Machine Learning-Modelle suchen oder etwas Robusteres benötigen, FastAPI liefert. Seine Einfachheit, Vielseitigkeit und Leistung werden Sie beeindrucken und machen es zu einem Muss für jeden Python-Entwickler.