Я пытаюсь оборачивать голову наилучшим способом решения концепций в API на основе REST. Плоские ресурсы, которые не содержат других ресурсов, не представляют проблемы. Там, где я столкнулся с трудностями, это сложные ресурсы.
 Например, у меня есть ресурс для комиксов. ComicBook имеет на нем всевозможные свойства, такие как author, issue number, date и т.д.
 В комиксе также есть список обложки 1..n. Эти обложки являются сложными объектами. Они содержат много информации об обложке: художник, дата и даже базовое 64-кодированное изображение обложки.
 Для GET на ComicBook я мог бы просто вернуть комикс и все обложки, включая их изображения base64. Это, вероятно, не имеет большого значения для получения одного комикса. Но предположим, что я создаю клиентское приложение, которое хочет перечислить все комиксы в системе в таблице. 
 Таблица будет содержать несколько свойств ресурса ComicBook, но мы, разумеется, не захочет отображать все покрытия в таблице. Возвращение 1000 комиксов, каждая из которых имеет несколько обложек, привела бы к смехотворно большому количеству данных, проходящих через провод, данные, которые в этом случае не нужны конечному пользователю.
 Мой инстинкт должен сделать Cover ресурсом и иметь ComicBook обложками. Итак, теперь Cover - это URI. GET на работе комиксов теперь, вместо огромного ресурса Cover мы отправляем URI для каждой обложки, и клиенты могут извлекать ресурсы Cover, по мере необходимости.
 Теперь у меня проблема с созданием новых комиксов. Конечно, мне захочется создать хотя бы одну обложку, когда я создаю Comic, на самом деле это, вероятно, бизнес-правило. 
 Так что теперь я застрял, я либо заставить клиент для обеспечения бизнес - правил, первыми подав Cover, получая URI для этой обложки, то POST ING в ComicBook с этим URI в списке, или мой POST на ComicBook берет в другом чем он выплевывает. Входящие ресурсы для POST и GET являются глубокими копиями, где исходящие GET содержат ссылки на зависимые ресурсы.
 Ресурс Cover вероятно, необходим в любом случае, потому что я уверен, что в качестве клиента я бы хотел в некоторых случаях решить проблему покрытия. Таким образом, проблема существует в общей форме независимо от размера зависимого ресурса. В общем, как вы обрабатываете сложные ресурсы, не заставляя клиента просто "знать", как состоят эти ресурсы?
