Polkuparametrit, kyselyparametrit ja pyyntörungot
Määrittäkää tyypitettyjä parametreja ja pyyntörunkojen skeemoja Pydanticilla.
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=falseUseita 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=webSisä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 neededAliakset 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=pythonPikatarkistus
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.
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
- FastAPI-projektin määritys ja ensimmäinen päätepiste
- Polkuparametrit, kyselyparametrit ja pyyntörungot
- Riippuvuuksien injektointi ja todentaminen
- Asynkroniset päätepisteet ja tietokantaintegraatio