FastAPI, creat de Sebastián Ramírez, este framework-ul web Python cu cea mai rapidă creștere și adoptare din istoria limbajului, utilizat masiv de companii precum Microsoft, Uber, Netflix și OpenAI. Proiectat pe baza standardelor deschise OpenAPI și JSON Schema, FastAPI atinge o performanță comparabilă cu framework-urile Node.js sau Go, beneficiind de viteza serverului ASGI Uvicorn și a motorului de validare Pydantic v2 (scris în Rust).
Dezvoltatorii aleg FastAPI pentru că elimină complet scrierea de cod redundant: prin simpla declarare a tipurilor de date în parametrii funcțiilor (Type Hints), FastAPI se ocupă automat de parsarea cererilor, validarea datelor cu erori detaliate, serializarea răspunsurilor și generarea automată a documentației interactive Swagger UI (la /docs) și ReDoc!
# [Clienți HTTP Concurenți]
# │
# ▼
# [Uvicorn ASGI Server] (Event Loop uvloop de mare viteză)
# │
# ▼
# ┌─────────────────────────────────────────────────────────────┐
# │ FastAPI Router: │
# │ ├── 1. Parsare automată Parametri (Path, Query, Body JSON) │
# │ ├── 2. Validare strictă tipuri prin Pydantic v2 (Rust Core)│
# │ ├── 3. Rulare Dependențe (Depends - Securitate, DB Session)│
# └────────────────────────────┬────────────────────────────────┘
# │
# ▼
# ┌─────────────────────────────────────────────────────────────┐
# │ async def endpoint_handler(): │
# │ - Execuție asincronă non-blocantă pe un singur fir CPU │
# │ - Gestionează mii de conexiuni I/O concurente fără thread-uri│
# └─────────────────────────────────────────────────────────────┘
Pilonii Tehnologici ai FastAPI
| Funcționalitate Cheie | Mecanism Tehnic | Avantaj pentru Dezvoltator |
|---|---|---|
| Pydantic v2 | Validare și serializare ultra-rapidă implementată în Rust (pydantic-core). | Viteză de până la 20x mai mare la validare comparativ cu framework-urile Python tradiționale. |
| Asincron Nativ (ASGI) | Rutine bazate pe async def și await pe bucla de evenimente Uvicorn. |
Debite enorme de cereri concurente la interogări de rețea, baze de date asincrone sau apeluri LLM. |
| Injecție de Dependințe | Sistem elegant bazat pe Depends() cu rezolvare automată a arborelui de dependențe. |
Gestiune curată a sesiunilor de bază de date (SQLAlchemy/Asyncpg) și autentificare JWT reutilizabilă. |
| OpenAPI & Swagger Nativ | Generare automată a specificației OpenAPI direct din codul Python. | Documentație interactivă live fără niciun efort suplimentar, ideală pentru testarea API-urilor în browser. |
from fastapi import FastAPI, HTTPException, status
from pydantic import BaseModel, Field, EmailStr
from typing import List
import uvicorn
app = FastAPI(
title="Dexblog Enterprise API",
version="1.0.0",
description="Microserviciu demonstrativ de mare performanță cu FastAPI"
)
# Schema de validare Pydantic v2:
class UserCreate(BaseModel):
name: str = Field(min_length=2, max_length=50, description="Numele complet al utilizatorului")
email: EmailStr
age: int = Field(gt=18, le=120, description="Vârsta trebuie să fie de minim 18 ani")
class UserResponse(UserCreate):
id: int
# Bază de date simulată în memorie:
fake_db: List[dict] = []
@app.post("/users", response_model=UserResponse, status_code=status.HTTP_201_CREATED)
async def create_user(user: UserCreate):
# Verificare unicitate email:
if any(u["email"] == user.email for u in fake_db):
raise HTTPException(status_code=400, detail="Adresa de email este deja înregistrată!")
new_user = user.model_dump()
new_user["id"] = len(fake_db) + 1
fake_db.append(new_user)
return new_user
if __name__ == "__main__":
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)