REST

REST or Representational State Transfer refers to the architectural design style of the world wide web.

The name “representational state transfer” is intended to evoke an image of how a well-designed Web application behaves: a network of web pages (a virtual state-machine), where the user progresses through the application by selecting links (state transitions), resulting in the next page (representing the next state of the application) being transferred to the user and rendered for their use. -Representational state transfer (Wikipedia)

In order to be considered REST, it must follow some constraints.

Client Server – The network must be made up of clients that interact with servers which have resources. This involves one-to-one communication.

Stateless – The client and server do not need to keep track of the other’s state. Requests are not tracked.

Uniform Interface – There must be a common language between the client and server. Servers can change the underlying implementation without breaking clients. This encourages independent evolution. Resources are identified by URI and HTTP. Resources are manipulated through representation. Clients sends representations of what it wants changed, but ultimately the server makes the decision. Messages are self-descriptive e.g. a response can specify content-type as text/html. The server sends data to the client and lets it know what it can do next.

Others – Clients can cache responses and save trips. There can be multiple layers. Clients can receive executable code i.e. JavaScript.

Benefits of a RESTful architecture include flexibility and scalability.