I am trying to build a RESTful web service which is supposed to power my UI. If I go by pure HATEOAS principles, I should only be exposing URIs of individual resources in collections. Now, say I have a a parent-child relationship, and each parent can have like 50 children, and the UI requires partial data for all the children also to be shown when the parent is clicked.
If I only expose child URIs with the parent, then the UI will have to make 50 web service calls to get this done. The other approach is to have a separate API which will give out the parent as well as partial info about the children instead of just the URIs. I am sure this is a common enough problem. What is the right balance here? What are some of the gotchas? The "only URI" approach is cleaner from a design perspective, but it could make the UI really slow and put a lot of load on the server because of all these service calls. So, the other approach might be more practical. In your experience, which is better?
You are being misled about what the hypermedia constraint requires. There is nothing that says you cannot include information from your child objects in a representation of the parent object. In fact that's exactly what Hal (a hypermedia type) was designed to enable.