Python
Pydantic model
pydantic.BaseModel ile istek gövdesini öğrenirsin.
Pydantic model
FastAPI, istek gövdesini doğrulamak için pydantic.BaseModel kullanır. Bir model sınıfı tanımlar, alanlara tür verirsin; FastAPI gövdeyi otomatik doğrular ve işleve parametre olarak geçirir.
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
@app.post("/items/")
def create_item(item: Item):
return item
İşlev parametresi item: Item yazınca FastAPI gövdeyi bir Item örneğine çevirir. Hatalı gövde gelirse 422 yanıtı döner.
doğrulama
Pydantic modeli, gövdeyi otomatik doğrular. Tür uyumsuzsa ya da zorunlu alan eksikse FastAPI 422 durum koduyla ayrıntılı bir hata yanıtı döner.
# Item(name: str, price: float)
# Gövde: {"name": "kalem", "price": 5.5} -> doğrulanır
# Gövde: {"name": "kalem"} -> 422 (price eksik)
Doğrulama başarılı olursa işlev çağrılır; parametre bir Item örneğidir ve item.name, item.price gibi alanlarla kullanılır.
Uygulama Pydantic modeliyle POST yolu
from fastapi import FastAPI, from pydantic import BaseModel ve from fastapi.testclient import TestClient ile başla. app = FastAPI() tanımla. class Item(BaseModel): içinde name: str ve price: float alanlarını ekle. @app.post("/items/") dekoratörüyle def create_item(item: Item): tanımla ve return item yapsın. client = TestClient(app) ile istemci oluştur. body = '{"name": "kalem", "price": 5.5}' tanımla. resp = client.post("/items/", content=body.encode(), headers={"content-type": "application/json"}) ile POST isteği yap. print(resp.text) ile yanıtı yazdır.
Örnek çözümü göster
from fastapi import FastAPI
from pydantic import BaseModel
from fastapi.testclient import TestClient
app = FastAPI()
class Item(BaseModel):
name: str
price: float
@app.post("/items/")
def create_item(item: Item):
return item
client = TestClient(app)
body = '{"name": "kalem", "price": 5.5}'
resp = client.post("/items/", content=body.encode(), headers={"content-type": "application/json"})
print(resp.text)
Kendini test et
-
Pydantic model kavramlarını eşleştir
- BaseModel
- Model temel sınıfı
- name: str
- Alan tanımıdır
- item: Item
- Parametre türüdür
- @app.post
- POST yolu tanımlar
-
Pydantic modeline uymayan gövde gelirse hangi durum kodu döner?
Cevabı göster
422 — Doğrulama hatasında 422 durum kodu döner.
-
BaseModel türetmesini tamamla
from pydantic import BaseModel
class Item(____):
name: str
price: float
Cevabı göster
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
Sıradaki ders: Path parametresi