REST stands for Representational State Transfer.
What is the problem?
- Software architecture research investigates methods for determining how best to partition a system, how components identify and communicate with each other, how they evolve, etc.
- Do we know any large software architecture that has scaled immensely? Can we learn/take something from it? Yes, the Web and the Internet in general.
What can we learn from it?
- Client-server (separation of concerns)
- Stateless (requests can be processed by different servers for scalability)
- Caching (performance and fault tolerance)
- Uniform interface (URI represents object and state)
- Layered System (components build on top of other components)
Example
- Client-server => browser-httpd
- Stateless, Uniform interface => /car/parts/12337 => URI represents the object and asks for a specific resource.
- Can be processed by any server because there is no context
- Output in html, XML or JSON
Example 2
- Imagine you could just re-use the component by redirecting requests to it
- Example: user auth
- Instead of having the user auth encapsulated in the application we can have the userauth to be a webservice that can be re-used by any application – this is RESTful