foundation
DTO
Определяйте explicit data transfer shapes на boundaries, чтобы validation, serialization, versioning и domain models оставались separate.
DTO задают явные формы при пересечении границ — HTTP, очереди, gRPC — отдельно от domain entities. Несут validation, versioning и serialization-friendly примитивы. Mapping layers не пускают persistence models в публичные API.
На интервью: почему не отдавать ORM entities напрямую. Где validation, optional fields и эволюция API.
Типовые ошибки: DTO один в один с таблицами; нет mapping tests; гигантские shared DTO везде.
Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.
Чеклист:
- Раздельные request, response и domain models.
- Validation на границе до domain logic.
- Явное versioning внешних контрактов.
- Автотесты mapping для критичных DTO.