Bullet Points about REST

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