Как я ранее ответил , использование DTO помогает отделить моделей постоянства от моделей API.Так что вы, кажется, поступаете правильно.
Проблема в том, что все эти 4 класса имеют абсолютно одинаковые атрибуты.
Всегда хорошая идея отделитьмодели вашего API из моделей сторонних API.Если сторонний API изменит свой контракт, вы не нарушите ваших клиентов.Поэтому используйте разные модели для каждого API.
И придерживайтесь картографических структур , таких как MapStruct , для уменьшения стандартного кода.Вы также можете рассмотреть Lombok для генерации методов получения, установки, equals()
, hashcode()
и toString()
.
Должен ли я повторить эти атрибуты через всеэти классы?Должен ли я иметь только один класс DTO для всего потока?
Если модели запроса и ответа содержат одинаковый набор полей , то можно начать с singleкласс для представления полезных нагрузок как запроса, так и ответа каждого API.Когда поля начинают различаться (полезная нагрузка запроса отличается от полезной нагрузки ответа), вы создаете новые модели для представления каждой полезной нагрузки.
В конечном счете, использование различных моделей для запроса и ответа даст вам гибкость,убедитесь, что вы выставите и получите только те атрибуты, которые хотите.