I'm currently getting my head around solutions for an architecture, in which we develop the client (SPA, Angular) as well as the backend (ASP.net Core). What I'm really interested in is the form of communication between these two parts: REST is almost a given, but would we send fully fledged DTOs or view-dependent ones? Let's say for example, we have the following server architecture:
The Controller could just return the IndividualDto, which is more or less the Individual Domain Model, or it could send an IndividualOverviewDto, IndividualDetailDto etc.
This seems to be the way to go, since it reduces the payload size quite a bit, but would also severely limit and couple the client side as well as not having the notion of a Resource. Furthermore, larger applications, like GitHub, usually also offer to access the APIs directly, which would contradict this approach.
I feel like both approaches have their pros and cons, but I didn't find many discussions or other information about this topic. Are there some guidelines or even definitive answers regarding the communication patterns?