API & Backend

FastAPI Dependency Injection (DI) ile Temiz ve Test Edilebilir Mimari Kurulumu

FastAPI'nin Depends mekanizmasını kullanarak veritabanı oturumlarını, kimlik doğrulama katmanlarını ve servis bağımlılıklarını izole etme rehberi.

3 dk

Depends() ile Bağımlılık Yönetimi

Kod tekrarını önlemek ve birim testlerinde veritabanını kolayca mock'layabilmek için FastAPI'nin Dependency Injection sistemi kullanılır.

dependencies.py
from fastapi import Depends, FastAPI, HTTPException, status
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials

app = FastAPI()
security = HTTPBearer()

async def get_current_user(creds: HTTPAuthorizationCredentials = Depends(security)):
    token = creds.credentials
    if token != "secret-token":
        raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Geçersiz Token")
    return {"user_id": "usr_123", "role": "admin"}

@app.get("/protected-dashboard")
async def dashboard(user: dict = Depends(get_current_user)):
    return {"message": f"Hoş geldiniz {user['user_id']}"}