FastAPI Mimarisi: ASGI, Starlette, Pydantic & Dependency Injection
Flask kolaylığı + Go performansı + otomatik Swagger dokümantasyonu.
Sipariş fişini bilgisayarlı tabletle alan akıllı garsondur. Yanlış sipariş verirsen (veri tipi hatalıysa) anında mutfağa gitmeden seni uyarır (Pydantic validasyonu).
FastAPI, web katmanı için Starlette (ASGI), veri doğrulama ve serileştirme için Pydantic v2 (Rust çekirdekli) kullanır. "Depends" mekanizması ile sınıf veya fonksiyon bazlı hiyerarşik Dependency Injection sağlar. Uvicorn sunucusu üzerinde asenkron koşturulur.
“FastAPI, Python tip ipuçlarını (type hints) kullanarak tek seferde hem veri doğrulaması (Pydantic), hem OpenAPI (Swagger) şeması, hem de otomatik serileştirme üretir. Depends() fonksiyonu ile veritabanı oturumları (SQLAlchemy Session) güvenle scoped yönetilir.”
from fastapi import FastAPI, Depends, HTTPException
from pydantic import BaseModel, EmailStr
class UserCreate(BaseModel):
name: str
email: EmailStr
@app.post("/users")
async def create_user(dto: UserCreate, db: Session = Depends(get_db)):
# dto otomatik validate edilmiştir, db bağlantısı enjekte edilmiştir
return {"status": "ok", "email": dto.email}
Pydantic modelini veritabanı ORM modeli sanmak; Pydantic veri transferi (DTO/Validasyon) içindir, SQLAlchemy veya Tortoise ise persistence içindir.