0Pricing
Python Academy · Lektion

Pfadparameter, Query-Parameter und Request-Bodies

Definieren Sie typisierte Parameter und Request-Body-Schemas mit Pydantic.

Pfadparameter, Query-Parameter und Request-Bodies ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Validierung von Pfadparametern

Fügen Sie Pfadparametern mit Path() Validatoren hinzu: Legen Sie Einschränkungen mit ge, le, gt und lt fest.

from fastapi import FastAPI, Path
app = FastAPI()

@app.get("/items/{item_id}")
def get_item(item_id: int = Path(ge=1, le=1000)):
    return {"item_id": item_id}

# GET /items/0  → 422 (must be >= 1)

Validierung von Query-Parametern

Verwenden Sie Query(), um Query-Parametern Validierung, Standardwerte, Aliase und Beschreibungen hinzuzufügen.

from fastapi import FastAPI, Query
app = FastAPI()

@app.get("/search")
def search(
    q: str = Query(min_length=2, max_length=50),
    page: int = Query(default=1, ge=1),
):
    return {"q": q, "page": page}

Optionale Query-Parameter

Verwenden Sie | None = None (Python 3.10+) oder Optional[str] = None, um einen Query-Parameter optional zu machen.

from fastapi import FastAPI
app = FastAPI()

@app.get("/users")
def list_users(
    dept: str | None = None,
    active: bool = True
):
    return {"dept": dept, "active": active}

# GET /users → dept=None, active=True
# GET /users?dept=HR&active=false

Mehrere Werte für einen Query-Parameter

Akzeptieren Sie mit list[str] und Query() eine Liste von Werten für einen einzelnen Query-Parameter.

from fastapi import FastAPI, Query
from typing import Annotated
app = FastAPI()

@app.get("/filter")
def filter_items(tags: Annotated[list[str], Query()] = []):
    return {"tags": tags}

# GET /filter?tags=python&tags=web

Verschachtelte Request-Bodies

Pydantic-Modelle können verschachtelt werden. FastAPI verarbeitet verschachteltes JSON automatisch.

from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()

class Address(BaseModel):
    street: str
    city: str

class User(BaseModel):
    name: str
    address: Address

@app.post("/users")
def create_user(user: User):
    return user.model_dump()

Feldbeschränkungen in Pydantic

Verwenden Sie Field() innerhalb eines Modells, um einzelnen Feldern Einschränkungen, Standardwerte und Beschreibungen hinzuzufügen.

from pydantic import BaseModel, Field

class Product(BaseModel):
    name: str = Field(min_length=1, max_length=100)
    price: float = Field(gt=0)
    quantity: int = Field(ge=0, default=0, description="Items in stock")

Request-Body + Pfad + Query zusammen

Kombinieren Sie alle drei Parametertypen in einem Endpunkt. FastAPI unterscheidet sie anhand ihrer Position: Pfadparameter stehen in der URL, einfache Typen sind Query-Parameter und Modelle bilden den Request-Body.

from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()

class ItemUpdate(BaseModel):
    name: str
    price: float

@app.put("/shops/{shop_id}/items/{item_id}")
def update_item(
    shop_id: int,
    item_id: int,
    item: ItemUpdate,
    notify: bool = False,
):
    return {"shop": shop_id, "item": item_id,
            "data": item.model_dump(), "notify": notify}

Datei-Uploads

Verwenden Sie UploadFile und File(), um Datei-Uploads zu akzeptieren. Greifen Sie mit await file.read() auf den Inhalt zu.

from fastapi import FastAPI, UploadFile, File
app = FastAPI()

@app.post("/upload")
async def upload(file: UploadFile = File(...)):
    content = await file.read()
    return {"filename": file.filename, "size": len(content)}

Formulardaten

Verwenden Sie Form(), um HTML-Formulardaten zu akzeptieren (application/x-www-form-urlencoded oder multipart/form-data).

# pip install python-multipart
from fastapi import FastAPI, Form
app = FastAPI()

@app.post("/login")
def login(username: str = Form(...), password: str = Form(...)):
    return {"username": username}

Zusammenfassung der Request-Validierung

FastAPI validiert automatisch alle Parametertypen. Ungültige Eingaben geben HTTP 422 mit einer detaillierten Fehlermeldung zurück, bevor Ihr Handler aufgerufen wird.

# Auto-validated:
# - Path params: type coercion, Path() constraints
# - Query params: Query() constraints, type coercion
# - Request body: Pydantic model validation
# - All errors → HTTP 422 Unprocessable Entity
# - No manual validation needed

Aliase und Veraltung

Verwenden Sie alias= in Query() oder Field(), um im Request einen anderen Namen zu akzeptieren, und deprecated=True, um alte Parameter als veraltet zu markieren.

from fastapi import FastAPI, Query
app = FastAPI()

@app.get("/items")
def get_items(
    q: str | None = Query(default=None, alias="search-query"),
    old: str | None = Query(default=None, deprecated=True),
):
    return {"q": q, "old": old}

# GET /items?search-query=python

Schnelltest

Wie unterscheidet FastAPI zwischen einem Pfadparameter, einem Query-Parameter und einem Request-Body?

Zusammenfassung

Verwenden Sie Path()/Query() für Parametereinschränkungen. Verschachteln Sie Pydantic-Modelle für komplexe Request-Bodies. Kombinieren Sie Pfad-, Query- und Request-Body-Parameter beliebig. UploadFile verarbeitet Dateien, Form() HTML-Formulare. FastAPI validiert alles, bevor Ihr Handler ausgeführt wird.

Häufig gestellte Fragen

Ist die Lektion „Pfadparameter, Query-Parameter und Request-Bodies“ kostenlos?

Ja — der vollständige Text von „Pfadparameter, Query-Parameter und Request-Bodies“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Pfadparameter, Query-Parameter und Request-Bodies“?

Definieren Sie typisierte Parameter und Request-Body-Schemas mit Pydantic. Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Python Academy zu starten?

Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Pfadparameter, Query-Parameter und Request-Bodies“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?

Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. FastAPI-Projekteinrichtung und erster Endpunkt
  2. Pfadparameter, Query-Parameter und Request-Bodies
  3. Dependency Injection und Authentifizierung
  4. Asynchrone Endpunkte und Datenbankintegration
← Zurück zu Python Academy