representational state transfer (REST) architectural style
- independent of programming languages on client and server
 
Design Principles
- uniform interface
- All API requests for the same resource should look the same
 
 - client-server decoupling
 - statelessness
- each request needs to include all the information necessary for processing it
 - no server side sessions
 
 - cacheability
- When possible, resources should be cacheable on the client or server side.
 
 - layered system architecture
- don’t assume that the client, and server applications connect directly to each other
 - need to be designed so that neither the client nor the server can tell whether it communicates with the end application or an intermediary.