Aplicațiile FastAPI gestionează configurația cu pydantic-settings (BaseSettings) — o clasă care citește config din variabile de mediu (și fișiere .env) cu , ținând secretele în afara codului și asigurând că config este corect la startup.
Aplicațiile FastAPI gestionează configurația cu pydantic-settings (BaseSettings) — o clasă care citește config din variabile de mediu (și fișiere .env) cu , ținând secretele în afara codului și asigurând că config este corect la startup.
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
app_name: str = "My API"
database_url: str # required — must be provided
secret_key: str # required (a secret)
debug: bool = False
max_connections: int = 10
class Config:
env_file = ".env" # also read from a .env file
settings = Settings() # reads & VALIDATES env vars at startup
BaseSettings citește automat fiecare câmp dintr-o variabilă de mediu corespunzătoare (de ex. DATABASE_URL), convertește tipuri ("true" → bool, "10" → int) și validează — o valoare obligatorie lipsă sau tip greșit eșuează imediat la startup cu o eroare clară (fail-fast).
from functools import lru_cache
from fastapi import Depends
@lru_cache # create the Settings once (cached)
def get_settings():
return Settings()
@app.get("/info")
def info(settings: Settings = Depends(get_settings)):
return {"app": settings.app_name, "debug": settings.debug}
Injectarea setărilor printr-o dependență în cache le face testabile (override în teste) și asigură o singură instanță.
# .env — local config, GITIGNORED (never commit secrets)
DATABASE_URL=postgresql://localhost/mydb
SECRET_KEY=dev-secret
DEBUG=true
✓ Keep secrets in env vars / .env (gitignored); commit a .env.example documenting keys
✓ In production, inject config via the platform's environment / secret manager
✓ Validation at startup catches misconfiguration immediately (not deep in a request)
Gestionarea corectă a setărilor este atât o necesitate operațională (aplicațiile au nevoie de config diferit în dev/staging/production) cât și o cerință de securitate (secretele precum URL-uri de bază de date și chei nu trebuie niciodată hardcodate în control de sursă — o breach comună și serioasă).
BaseSettings al Pydantic oferă soluția idiomatică FastAPI, și înțelegerea sa este cunoaștere importantă pentru zilele de lucru.
Avantajele sale principale: citirea config din variabile de mediu (ținând secretele în afara codului, abordarea twelve-factor) cu conversie și validare automată de tip — deci misconfigurarea eșuează rapid la startup cu o eroare clară mai degrabă decât ca o eșec confuz la runtime.
Combinată cu dependency injection (făcând setările testabile și singleton) și practica fișierelor .env ignorate de git pentru dezvoltarea locală, aceasta vă oferă configurație sigură, validată, adaptată mediului.
Știerea cum să definiți setări, să le utilizați prin DI și să gestionați secretele în siguranță este fundamentală pentru construirea aplicațiilor FastAPI gata pentru producție.
O bibliotecă de întrebări de interviu IT cu răspunsuri detaliate — de la Junior la Senior.
Donează