FastAPI 0.100+ dùng Pydantic v2 mặc định — nhanh hơn 5-50x nhờ Rust core.
Thay đổi chính:
python
# v1 → v2 migration
# 1. validator → field_validator
# v1:
@validator('email')
def validate_email(cls, v): ...
# v2:
from pydantic import field_validator
@field_validator('email')
@classmethod
def validate_email(cls, v: str) -> str: ...
# 2. orm_mode → model_config
# v1: class Config: orm_mode = True
# v2:
from pydantic import ConfigDict
class UserSchema(BaseModel):
model_config = ConfigDict(from_attributes=True)
# 3. .dict() → .model_dump()
user.model_dump()
user.model_dump(exclude={'password'})
# 4. .json() → .model_dump_json()
user.model_dump_json()
# 5. parse_obj → model_validate
UserSchema.model_validate({"id": 1, "name": "Alice"})
UserSchema.model_validate(orm_object, from_attributes=True)
# 6. BaseSettings bị tách ra pydantic-settings package
from pydantic_settings import BaseSettings