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.