Python Academy · Oppitunti

Polkuparametrit, kyselyparametrit ja pyyntörungot

Määrittäkää tyypitettyjä parametreja ja pyyntörunkojen skeemoja Pydanticilla.

Oppitunti 2/413 vaihetta

Polkuparametrit, kyselyparametrit ja pyyntörungot on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.

Polkuparametrien validointi

Lisätkää polkuparametreille validointisäännöt käyttämällä Path()-funktiota: määrittäkää rajoitteet ge, le, gt ja 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)

Kyselyparametrien validointi

Käyttäkää Query()-funktiota validoinnin, oletusarvojen, aliasten ja kyselyparametrien kuvausten lisäämiseen.

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}

Valinnaiset kyselyparametrit

Käyttäkää syntaksia | None = None (Python 3.10+) tai Optional[str] = None kyselyparametrin määrittämiseen valinnaiseksi.

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

Useita arvoja yhdelle kyselyparametrille

Hyväksykää yhdelle kyselyparametrille useita arvoja käyttämällä tyyppiä list[str] ja funktiota 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

Sisäkkäiset pyynnön rungot

Pydantic-mallit voivat olla sisäkkäisiä. FastAPI käsittelee sisäkkäisen JSON-rakenteen automaattisesti.

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

Kenttien rajoitteet Pydanticissa

Käyttäkää mallin sisällä Field()-funktiota yksittäisten kenttien rajoitteiden, oletusarvojen ja kuvausten lisäämiseen.

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

Pyynnön runko + polku + kysely yhdessä

Yhdistäkää kaikki kolme parametrityyppiä samaan päätepisteeseen. FastAPI erottaa ne sijainnin perusteella: polkuparametrit ovat URL-osoitteessa, yksinkertaiset tyypit kyselyparametreja ja mallit pyynnön runkoja.

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}

Tiedostojen lähettäminen

Käyttäkää UploadFile-tyyppiä ja File()-funktiota tiedostojen vastaanottamiseen. Käyttäkää sisältöä komennolla 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)}

Lomaketiedot

Käyttäkää Form()-funktiota HTML-lomaketietojen vastaanottamiseen (application/x-www-form-urlencoded tai 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}

Pyyntöjen validoinnin yhteenveto

FastAPI validoi kaikki parametrityypit automaattisesti. Virheelliset syötteet palauttavat HTTP 422 -vastauksen ja yksityiskohtaisen virheen ennen käsittelijän kutsumista.

# 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

Aliakset ja vanhentuneeksi merkitseminen

Käyttäkää alias=-argumenttia funktiossa Query() tai Field(), jos haluatte hyväksyä pyynnössä eri nimen, ja merkitkää vanhat parametrit argumentilla deprecated=True.

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

Pikatarkistus

Miten FastAPI erottaa polkuparametrin, kyselyparametrin ja pyynnön rungon toisistaan?

Kertaus

Käyttäkää Path()/Query()-funktioita parametrien rajoitteisiin. Sisäkkäistäkää Pydantic-malleja monimutkaisia pyyntöjen runkoja varten. Yhdistäkää polku-, kysely- ja runkoparametreja vapaasti. UploadFile käsittelee tiedostoja ja Form() HTML-lomakkeita. FastAPI validoi kaiken ennen käsittelijän suorittamista.

Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
76
Oppitunnit
320

Usein kysytyt kysymykset

Onko oppitunti ”Polkuparametrit, kyselyparametrit ja pyyntörungot” ilmainen?

Kyllä – oppitunnin ”Polkuparametrit, kyselyparametrit ja pyyntörungot” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Polkuparametrit, kyselyparametrit ja pyyntörungot”?

Määrittäkää tyypitettyjä parametreja ja pyyntörunkojen skeemoja Pydanticilla. Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Polkuparametrit, kyselyparametrit ja pyyntörungot”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?

Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. FastAPI-projektin määritys ja ensimmäinen päätepiste
  2. Polkuparametrit, kyselyparametrit ja pyyntörungot
  3. Riippuvuuksien injektointi ja todentaminen
  4. Asynkroniset päätepisteet ja tietokantaintegraatio
← Takaisin: Python Academy