Heim  >  Artikel  >  Backend-Entwicklung  >  Grundlegendes zu FastAPI-Grundlagen: Ein Leitfaden zu FastAPI, Uvicorn, Starlette, Swagger UI und Pydantic

Grundlegendes zu FastAPI-Grundlagen: Ein Leitfaden zu FastAPI, Uvicorn, Starlette, Swagger UI und Pydantic

Barbara Streisand
Barbara StreisandOriginal
2024-11-03 22:01:03506Durchsuche

Understanding FastAPI Fundamentals: A Guide to FastAPI, Uvicorn, Starlette, Swagger UI, and Pydantic

FastAPI ist ein modernes, leistungsstarkes Webframework zum Erstellen von APIs mit Python, das es Entwicklern ermöglicht, mit minimalem Aufwand leistungsstarke und effiziente Anwendungen zu erstellen. Es wurde im Hinblick auf die asynchrone Programmierung entwickelt, wodurch es extrem schnell ist und mehrere Anfragen gleichzeitig bearbeiten kann. Zu den wichtigsten Komponenten, die FastAPI unterstützen, gehören Uvicorn, Starlette, Swagger UI und Pydantic. In diesem Leitfaden untersuchen wir jede dieser Komponenten und sehen, wie sie in FastAPI zusammenkommen, mit Codebeispielen zur Veranschaulichung der Schlüsselkonzepte.


1. Der Kern von FastAPI

FastAPI basiert auf zwei wesentlichen Grundlagen:

  • Asynchrone Programmierung: Durch die Nutzung von Pythons Async und Wait kann FastAPI viele Anfragen gleichzeitig verarbeiten und ist somit effizient für Anwendungen, die Parallelität erfordern.
  • Typanmerkungen: FastAPI verwendet Pythons Typhinweise, um Anforderungs- und Antwortdaten automatisch zu validieren und zu serialisieren, was die Entwicklung schneller und sicherer macht.

Beginnen wir mit einer einfachen FastAPI-App, um einen Eindruck von deren Struktur zu bekommen:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"Hello": "World"}

Dies ist eine einfache FastAPI-Anwendung mit einer einzelnen Route (/), die eine JSON-Antwort mit {"Hello": "World"} zurückgibt.

Um diese App auszuführen, verwenden Sie Uvicorn, einen ASGI-Server, der für die Bereitstellung asynchroner Webanwendungen entwickelt wurde.


2. Uvicorn: Der ASGI-Server

Uvicorn ist ein blitzschneller ASGI-Server, der für die Verarbeitung von asynchronem Code optimiert ist. Es ist für die Ausführung von FastAPI-Anwendungen unerlässlich, da es eingehende HTTP-Anfragen verarbeitet und den Lebenszyklus dieser Anfragen verwaltet.

Um Ihre FastAPI-App mit Uvicorn auszuführen, verwenden Sie den folgenden Befehl:

uvicorn main:app --reload
  • main:app gibt an, dass Uvicorn in der Datei main.py nach einer App-Instanz suchen soll.
  • --reload ermöglicht Hot-Reloading während der Entwicklung, sodass der Server automatisch neu geladen wird, wenn Sie Änderungen speichern.

Wenn Sie diesen Befehl ausführen, beginnt Uvicorn mit der Bereitstellung Ihrer FastAPI-App und Sie können unter http://127.0.0.1:8000 darauf zugreifen.


3. Starlette: FastAPI's Web Framework Foundation

FastAPI basiert auf Starlette, einem leichten ASGI-Framework, das die Kern-HTTP-Vorgänge abwickelt, einschließlich Routing, Middleware und WebSockets-Unterstützung. Starlette stellt die Low-Level-Tools bereit, die FastAPI zum Verwalten von HTTP-Anfragen verwendet, und macht es so zu einer stabilen und leistungsstarken Grundlage für die Erstellung von Webanwendungen.

FastAPI nutzt das Routing-System von Starlette, um API-Endpunkte zu definieren. Zum Beispiel:

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}

In diesem Beispiel:

  • @app.get("/items/{item_id}") definiert eine Route mit einem Pfadparameter item_id.
  • FastAPI verarbeitet diesen Pfadparametertyp (hier int), indem es das Routing-System von Starlette in seine Typprüfung und -validierung integriert.

Starlette ermöglicht Ihnen auch das Hinzufügen von Middleware für verschiedene Vorgänge, wie z. B. die Handhabung von CORS (Cross-Origin Resource Sharing), die Anforderungsprotokollierung oder die benutzerdefinierte Authentifizierung:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"Hello": "World"}

Diese Flexibilität in Starlette macht FastAPI hochgradig konfigurierbar, sodass Entwickler bei Bedarf problemlos benutzerdefinierte Middlewares hinzufügen können.


4. Swagger UI: Interaktive API-Dokumentation

FastAPI generiert automatisch interaktive API-Dokumentation mit Swagger UI. Diese Dokumentation ist standardmäßig unter /docs verfügbar und ermöglicht Entwicklern, Endpunkte direkt über den Browser zu testen.

Um dies in Aktion zu sehen, starten Sie Ihre FastAPI-App und besuchen Sie http://127.0.0.1:8000/docs. Sie sehen eine interaktive Swagger-Benutzeroberfläche, die alle Ihre Routen, ihre Parameter und die erwarteten Antworten auflistet.

Eine weitere Dokumentationsschnittstelle, ReDoc, wird standardmäßig auch unter /redoc bereitgestellt und bietet eine detailliertere Ansicht der API-Spezifikationen.


5. Pydantic: Datenvalidierung und Serialisierung

Einer der leistungsfähigsten Aspekte von FastAPI ist die Verwendung von Pydantic zur Datenvalidierung. Mit Pydantic-Modellen können Sie die Struktur von Anforderungs- und Antwortdaten mit strengen Typbeschränkungen und automatischer Validierung definieren.

Fügen wir unserem Beispiel ein Pydantic-Modell hinzu:

uvicorn main:app --reload

In diesem Code:

  • Das Item-Modell erbt von BaseModel und definiert drei Felder: Name, Preis und is_offer. Diese Felder haben bestimmte Datentypen und einen optionalen Standardwert für is_offer.
  • Wenn Sie eine Anfrage mit JSON-Daten an /items/{item_id} senden, verwendet FastAPI Pydantic, um die Daten anhand des Item-Modells zu validieren, wobei Datentypen nach Möglichkeit automatisch konvertiert werden.

Versuchen Sie, eine Anfrage wie diese über die Swagger-Benutzeroberfläche unter /docs:
zu senden

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}

FastAPI validiert die Daten und gibt automatisch alle Fehler zurück, wenn die Daten nicht den erwarteten Typen entsprechen. Wenn der Preis beispielsweise als Zeichenfolge angegeben wird (wie „zwanzig“), antwortet FastAPI mit einem detaillierten Validierungsfehler.


6. Alles zusammenfügen

Lassen Sie uns unsere App erweitern, indem wir weitere Routen hinzufügen und alles kombinieren, was wir bisher gelernt haben:

from starlette.middleware.cors import CORSMiddleware

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

Mit diesem Setup:

  • Routing und Parameterverarbeitung: Der Endpunkt @app.get("/items/{item_id}") demonstriert Pfadparameter und Abfrageparameter (z. B. q).
  • Ausnahmebehandlung: Verwendung von HTTPException für benutzerdefinierte Fehlerantworten (z. B. wenn ein Element nicht gefunden wird).
  • CORS: Mit der CORS-Middleware können Sie Anfragen aus verschiedenen Domänen stellen, was für die Frontend-Backend-Kommunikation in Web-Apps von entscheidender Bedeutung ist.

Ausführen der Anwendung

Um diese Anwendung auszuführen, verwenden Sie Uvicorn:

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"Hello": "World"}

Navigieren Sie zu http://127.0.0.1:8000/docs, um die interaktive Dokumentation anzuzeigen, oder verwenden Sie ein Tool wie cURL oder Postman, um Anfragen an die verschiedenen Endpunkte zu senden.


Zusammenfassung

FastAPI kombiniert die Leistungsvorteile der asynchronen Programmierung mit der Einfachheit von Python-Typhinweisen, um ein Framework zu erstellen, das schnell, einfach zu verwenden und für Produktionsanwendungen geeignet ist. Durch die Integration von Uvicorn, Starlette, Swagger UI und Pydantic bietet FastAPI einen unglaublich optimierten Ansatz für die API-Entwicklung, was es zu einer großartigen Wahl sowohl für Rapid Prototyping als auch für Anwendungen in Produktionsqualität macht.

Mit diesen grundlegenden Grundlagen sind Sie nun gerüstet, tiefer in die Welt von FastAPI einzutauchen und skalierbare, leistungsstarke Anwendungen zu erstellen.

Referenz

  1. FastAPI-Dokumentation
  2. Uvicorn-Dokumentation
  3. Starlette-Dokumentation
  4. Pydantische Dokumentation
  5. Swagger UI-Dokumentation

Das obige ist der detaillierte Inhalt vonGrundlegendes zu FastAPI-Grundlagen: Ein Leitfaden zu FastAPI, Uvicorn, Starlette, Swagger UI und Pydantic. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn