-
Type: Improvement
-
Status: Closed
-
Priority: Minor
-
Resolution: Fixed
-
Affects Version/s: V4.0_WD01
-
Fix Version/s: V4.0_WD01
-
Component/s: ATOM Format, JSON Format
-
Labels:None
-
Environment:
[Proposed]
-
Proposal:
-
Resolution:
Today, specifying $expand may return the same item multiple times. For example, if the someone is really popular, selecting ~people/$expand=friends may return the same friend for multiple people. This can lead to payload bloat when attempting to select a graph of related entities.
A simple means of compression would be to allow the service to return only the id of related entities that have already been returned within a feed. This would work nicely for existing clients that track incoming entities as they generally already have logic to merge with or simply return previously retrieved objects.
We might consider a preference to allow the client to request whether or not duplicate ids are returned in full, and pick a default behavior for the service if the client doesn't specify a preference. We could use the defined return=minimal for this; currently this is used in PUT/POST to say don't return results if they haven't changed, but are undefined for a GET operation in OData.