Python Academy · leksjon

Stiparametere, spørringsparametere og forespørselskropper

Definer typede parametere og skjemaer for forespørselskropper med Pydantic.

Leksjon 2 av 413 trinn

Stiparametere, spørringsparametere og forespørselskropper er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 4 leksjoner.

Validering av path-parametere

Legg til validatorer for path-parametere ved hjelp av Path(): angi begrensninger med ge, le, gt og lt.

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)

Validering av query-parametere

Bruk Query() for å legge til validering, standardverdier, aliaser og beskrivelser i query-parametere.

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}

Valgfrie query-parametere

Bruk | None = None (Python 3.10+) eller Optional[str] = None for å gjøre en query-parameter valgfri.

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

Flere verdier for én query-parameter

Godta en liste med verdier for én query-parameter med list[str] og Query().

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

Nestede forespørselskropper

Pydantic-modeller kan nestes. FastAPI håndterer nestet JSON automatisk.

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()

Feltbegrensninger i Pydantic

Bruk Field() i en modell for å legge til begrensninger, standardverdier og beskrivelser for individuelle felt.

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")

Forespørselskropp + path + query sammen

Kombiner alle tre parametertypene i ett endepunkt. FastAPI skiller mellom dem etter plassering: path i URL-en, enkle typer som query-parametere og modeller som forespørselskropp.

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}

Filopplastinger

Bruk UploadFile og File() for å ta imot filopplastinger. Få tilgang til innholdet med await file.read().

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)}

Skjemadata

Bruk Form() for å ta imot HTML-skjemadata (application/x-www-form-urlencoded eller 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}

Sammendrag av forespørselsvalidering

FastAPI validerer alle parametertyper automatisk. Ugyldige inndata gir HTTP 422 med en detaljert feil før handleren kalles.

# 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

Alias og utfasing

Bruk alias= i Query() eller Field() for å godta et annet navn i forespørselen, og deprecated=True for å merke gamle parametere som foreldede.

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

Hurtigsjekk

Hvordan skiller FastAPI mellom en path-parameter, en query-parameter og en forespørselskropp?

Oppsummering

Bruk Path()/Query() for parameterbegrensninger. Nest Pydantic-modeller for komplekse forespørselskropper. Kombiner path-, query- og forespørselskroppparametere fritt. UploadFile håndterer filer; Form() håndterer HTML-skjemaer. FastAPI validerer alt før handleren kjøres.

Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
76
Leksjoner
320

Ofte stilte spørsmål

Er leksjonen «Stiparametere, spørringsparametere og forespørselskropper» gratis?

Ja – hele teksten i «Stiparametere, spørringsparametere og forespørselskropper» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Stiparametere, spørringsparametere og forespørselskropper»?

Definer typede parametere og skjemaer for forespørselskropper med Pydantic. Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Python Academy?

Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Stiparametere, spørringsparametere og forespørselskropper»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?

Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. FastAPI-prosjekt og første endepunkt
  2. Stiparametere, spørringsparametere og forespørselskropper
  3. Avhengighetsinjeksjon og autentisering
  4. Asynkrone endepunkter og databaseintegrasjon
← Tilbake til Python Academy