FastAPI extraherar vägparametrar (del av URL-vägen) och frågeparametrar (efter ?) från funktionsargument, med typhintar för automatisk konvertering och validering.
Vägparametrar — del av URL-en
():
{: item_id}
En funktionsparameter vars namn matchar en {placeholder} i vägen blir en vägparameter. Typhinten (int) konverterar automatiskt strängen från URL-en och returnerar ett tydligt 422-fel om det inte matchar.
@app.get("/items")
def list_items(skip: int = 0, limit: int = 10, q: str | None = None):
# parameters NOT in the path become QUERY parameters
# GET /items?skip=20&limit=5&q=phone → skip=20, limit=5, q="phone"
return {"skip": skip, "limit": limit, "q": q}
Funktionsparametrar inte i vägen blir frågeparametrar. Ett standardvärde gör dem valfria (skip: int = 0); str | None = None gör en valfri nullbar frågeparameter. Utan ett standardvärde är de obligatoriska.
def search(q: str): # REQUIRED query param (no default) → ?q=... must be present
def search(q: str = ""): # optional, defaults to ""
def search(q: str | None = None): # optional, defaults to None
@app.get("/users/{user_id}/items")
def user_items(user_id: int, limit: int = 10):
# user_id = path param, limit = query param — distinguished by the path
Väg- och frågeparametrar är hur slutpunkter tar emot inmatning från URL-en — grundläggande för nästan varje API-väg (hämtning av resurs efter id, filtrering, sidnumrering, sökning).
FastAPI:s tillvagagång är elegant och en nyckelorsak till att det är produktivt: genom att bara deklarera typade funktionsparametrar får du automatisk extrahering, typkonvertering, validering (med tydliga 422-fel vid dålig inmatning) och semantik för obligatorisk-mot-valfri (via standardvärden) — allt härledd från standard Python-typhintar, utan manuell analys.
Att förstå skillnaden (vägparametrar kommer från {placeholder}, allt annat är en frågeparameter) och hur standardvärden styr valfriheten är essentiell daglig kunskap för att bygga FastAPI-slutpunkter.