FastAPI ve Pydantic ile Veri Doğrulama Rehberi

0 Yanıt 1 Görüntülenme
Puanlayanlar
Katılımcılar
Konuyu Açan #1
FastAPI, Python tabanlı modern web framework’ü, yüksek performans ve kolay kullanım özellikleriyle öne çıkar. Bu framework, Pydantic kütüphanesiyle entegre çalışarak gelen verilerin doğruluğunu ve yapısal uyumunu sağlamak için güçlü bir araç sunar. Bu rehberde, FastAPI ve Pydantic kullanarak nasıl etkili veri doğrulama yapabileceğinizi detaylıca ele alacağız.


FastAPI ile API geliştirirken en kritik adımlardan biri, gelen verilerin beklenen yapıya uygun olup olmadığını kontrol etmektir. Bu noktada, Pydantic modelleri devreye girer. Pydantic, Python veri modellerini tanımlamayı ve bu modellerin veriye uygunluğunu otomatik olarak doğrulamayı sağlar.

İlk olarak, Pydantic modeli oluşturarak başlarsınız. Mesela, bir kullanıcı kaydı için isim, email ve yaş gibi alanlar tanımlayabilirsiniz:

KOD
1234567python
from pydantic import BaseModel, EmailStr, conint

class User(BaseModel):
    name: str
    email: EmailStr
    age: conint(ge=18, le=99)  # 18-99 arası yaş sınırı


Burada, EmailStr ile email formatını otomatik kontrol eder, conint ise yaşın belirli sınırlar içinde olmasını sağlar. FastAPI’de, bu modeli endpoint’e parametre olarak eklediğinizde, gelen JSON verisi otomatik olarak doğrulanır ve uyumsuzluk halinde detaylı hata mesajları döner:

{
"detail": [
{
"loc": ["body", "age"],
"msg": "ensure this value is greater than or equal to 18",
"type": "value_error.number.not_ge"
}
]
}


Bunun yanı sıra, Pydantic modellerinde varsayılan değerler, zorunlu alanlar ve custom validasyonlar gibi gelişmiş özellikler de bulunur. Bu özellikler, API’nizin güvenilirliğini ve veri bütünlüğünü artırmada kritik rol oynar.

Son olarak, veriler üzerinde önceden tanımlanmış validasyonlar dışında, kendi özel doğrulama mantıklarınızı da validator dekoratörü ile ekleyebilirsiniz:

KOD
12345678910111213python
from pydantic import validator

class User(BaseModel):
    name: str
    email: EmailStr
    age: conint(ge=18, le=99)

    @validator('name')
    def name_must_be_capitalized(cls, v):
        if not v.istitle():
            raise ValueError('Name must be capitalized')
        return v


Bu sayede, verilerinizi hem temel hem de gelişmiş seviyede kontrol altına alabilirsiniz. FastAPI ve Pydantic ile veri doğrulama, API güvenliği ve veri bütünlüğü açısından kritik bir öneme sahiptir ve doğru kullanıldığında uygulama kalitenizi önemli ölçüde artırır.

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi