По моему мнению, один из хороших способов реализации был бы следующим:
Служба REST может возвращать данные в следующем формате:
a) Список объектов LineItem, гдекаждый объект LineItem содержит только идентификатор своего контейнера (примечание: это не неправильный подход, поскольку дочерние объекты могут очень хорошо содержать ссылку на своего родителя, если родительские данные не повторяются в каждом дочернем объекте).
б) Список объектов-контейнеров.Очевидно, что должны быть возвращены только те контейнеры, на которые ссылаются позиции.
Внешняя логика может просматривать список позиций и просматривать сведения о контейнере в списке контейнеров.
Элементы данных a) и b) могут отправляться через отдельные вызовы илиодин звонок.В идеале, если строго следовать принципам REST, а выполнение двух вызовов не влияет на производительность, следует выполнить два отдельных вызова, и, таким образом, согласно принципам REST ресурс LineItem извлекается в одном вызове, а ресурс контейнера - в другом вызове.
При использовании этого подхода информация о контейнере не повторяется, в объектах отдельных позиций повторяются только идентификаторы контейнера, что в большинстве случаев должно быть в порядке.
Таким образом, этот подход по существу аналогичен подходу 1)что вы описали, за исключением того факта, что lineitems может содержать идентификатор своих родителей (контейнера).
Согласно тому, что я понимаю, упомянутый в вопросе подход 2 повторяет полную информацию о контейнере для каждого объекта lineitem, который являетсяопределенно неправильно.Идентификаторы могут повторяться, но не полный объект, независимо от того, извлекаются ли данные из БД или передаются во внутреннем интерфейсе или отправляются во внешний интерфейс.
Надеюсь, это обеспечит некоторую ясность.