Я обычно использую вариант номер один, включая ids
других объектов.В противном случае DTO может через некоторое время стать довольно раздутым, что приведет к большому количеству ненужных поисков в базе данных.
Я выберу второй вариант, только если DTO никогда не имеет никакого смысла без содержащихся объектов.Но это почти никогда не бывает, и сложно и опасно предположить, что вы знаете, какую информацию захотят получить все будущие пользователи вашего DTO.
Когда речь идет о разработке конечной точки API (при условии, чтовы выбираете первый вариант) вы можете позволить клиенту получать User
s и UserGroup
s, вызывая следующие конечные точки:
/users/:id
/users/:id/usergroups
Это так, чтобы клиент не должен былдождитесь окончания извлечения User
, прежде чем извлекать UserGroup
s.Это следует принципам RESTful и может, например, выполняться параллельно с клиентом.