[Feature] Allow For Exclusion of Optional Resource Members
Borrowing from the JSON:API Document Resource Objects:
A resource object MAY contain any of these top-level members:
attributes: an attributes object representing some of the resource’s data.relationships: a relationships object describing relationships between the resource and other JSON:API resources.links: a links object containing links related to the resource.meta: a meta object containing non-standard meta-information about a resource that can not be represented as an attribute or relationship.
Ideally, there would be per-View configuration options allowing for exclusion from the returned JSON object. Patterns similar to the remove_links? functionality could be used to conditionally exclude these resource members.
I imagine the idea is to omit a certain property when it is empty (i.e. unused), or is the goal to sometimes remove populated properties in the response payload?
The goal is to remove populated properties to reduce payload size. For example, removing links from nested objects in an index query but maintaining links at the top level for pagination and such.
So is the goal is to omit based on which View is used or based on something found in the data or Plugn.Conn?
I wonder if this could also be achieved by adding support for nil returns from the existing links, meta, etc. Behavior callbacks for View.
Yep exactly.
Yeah that seems like a very viable solution. I'll play around with it locally and see what needs to be adjusted as a result.