Stiparametere, spørringsparametere og forespørselskropper
Definer typede parametere og skjemaer for forespørselskropper med Pydantic.
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=falseFlere 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=webNestede 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 neededAlias 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=pythonHurtigsjekk
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.
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
- FastAPI-prosjekt og første endepunkt
- Stiparametere, spørringsparametere og forespørselskropper
- Avhengighetsinjeksjon og autentisering
- Asynkrone endepunkter og databaseintegrasjon