Фундаментальный вопрос: вы всегда будете запрашивать полный набор данных (изображения, похожие фильмы, актеры и т. Д.) Или вы хотите иметь выбор, чтобы получить только часть этого? Второй вопрос: насколько перекрываются наборы данных? (актер может сыграть в> 100 фильмах, и получение его информации как части информации о каждом фильме бессмысленно)
Если вам всегда захочется получить все это, перейдите к большим объектам со встроенными ссылочными объектами (просто не забудьте использовать сжатие). Этот подход должен быть более эффективным, если пропускная способность сети является проблемой.
Если вы хотите иметь больше гибкости, лучше использовать отдельные конечные точки. Это вызовет больше сетевого трафика. Если вы выберете этот подход, вам следует рассмотреть возможность использования какого-либо кеша.
С другой стороны, вы можете создать гибрид, который возвращает базовую информацию для /movie
, но расширенные данные для /movie?include=images,cast
и /movie?include=all
.
Но это потребует дополнительных разработок.
Там также может быть четвертый вариант. Вы слышали о GraphQL (https://graphql.org/)? Это позволяет определить, какие данные вы хотите получить.