Between the client who requests a representation of a resource’s state, and the server who sends the response back, there might be a number of servers in the middle. These servers might provide a security layer, a caching layer, a load-balancing layer, or other functionality. Those layers should not affect the request or the response. The client is agnostic as to how many layers, if any, there are between the client and the actual server responding to the request. Layering can also be used for caching.
|– simplifies clients: similar to the client-server constraint, this constraint improves simplicity by separating concerns;|
|– shared caching: placing shared caches at boundaries of organizational domain can result in significant benefits;|
|– scalability: intermediaries can be used to improve system scalability by enabling load balancing;|
|– lecagy encapsulation: can be used to encapsulate legacy services or protect new services from legacy clients;|
|– latency: adds overhead and latency and can reduce user perceived performance;|
|Layered System||Layered System concept|
|Fielding’s thesis part||https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#fig_5_7|