FastAPI et Pydantic V2

FastAPI 0.100+, publié en juillet 2023, adopte Pydantic V2 par défaut. Les modèles de requête et de réponse bénéficient du cœur Rust pour une validation jusqu'à 50× plus rapide. La migration est généralement transparente pour les cas simples.

Adaptation du code

python
from fastapi import FastAPI
from pydantic import BaseModel, ConfigDict

app = FastAPI()

# Pydantic V2 dans FastAPI
class Item(BaseModel):
    model_config = ConfigDict(from_attributes=True)
    name: str
    price: float
    in_stock: bool = True

@app.post('/items/')
async def create_item(item: Item) -> Item:
    return item

# model_validate remplace parse_obj
item = Item.model_validate({'name': 'Widget', 'price': 9.99})
# model_dump remplace dict()
print(item.model_dump())  # {'name': 'Widget', ...}

Sources