Зараз я створюю REST-API для проекту і читаю статтю за статтею про кращі практики. Багато хто, здається, проти DTO і просто виставляють доменну модель, тоді як інші вважають, що DTO (або Користувацькі моделі або все, що ви хочете назвати) є поганою практикою. Особисто я думав, що ця стаття має багато сенсу.
Однак я також розумію недоліки DTO з усім додатковим кодом відображення, моделями доменів, які можуть бути на 100% ідентичними їхнім DTO-аналогам тощо.
Наш API в основному створений для того, щоб інші клієнти могли споживати дані, однак, якщо ми це зробимо правильно, ми також хотіли б використовувати їх для власного веб-інтерфейсу, якщо це можливо.
Вся справа в тому, що ми можемо не хотіти відкривати всі дані домену іншим клієнтським користувачам. Значна частина даних матиме сенс лише у нашому власному веб-додатку. Крім того, ми можемо не хотіти розкривати всі дані про об'єкт у всіх сценаріях, особливо стосунки з іншими об'єктами тощо. Наприклад, якщо ми виставляємо список конкретного об'єкта, ми не обов'язково хотіли б розкрити всю ієрархію об'єктів; щоб діти об'єкта не піддавалися впливу, а могли бути виявлені через посилання (гетеоа).
Як я повинен вирішити цю проблему? Я думав про те, щоб використовувати комбінації Джексона на наших моделях домену, щоб контролювати, які дані будуть піддані різним сценаріям. Або ми повинні просто використовувати DTO до кінця - навіть враховуючи його недоліки та суперечки?