Representational State Transfer (REST)

Web Architecture (INFO 290-03)

Erik Wilde, UC Berkeley School of Information
2008-09-23

Creative Commons License

This work is licensed under a CC
Attribution 3.0 Unported License

Abstract

Representational State Transfer (REST) is an architectural style for building distributed systems. The Web is an example for such a system. REST-style applications can be built using a wide variety of technologies. REST's main principles are those of resource-oriented states and functionalities, the idea of a unique way of identifying resources, and the idea of how operations on these resources are defined in terms of a single protocol for interacting with resources. REST-oriented system design leads to systems which are open, scalable, extensible, and easy to understand.


The Web as a System


Web System Design

There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.

C. A. R. Hoare, The Emperor's Old Clothes, 1980 Turing Award Lecture


Technologies and Implementations

Outline (Technologies and Implementations)

  1. Technologies and Implementations [3]
  2. REST Principles [9]
  3. REST Implementation [4]
  4. Conclusions [1]

Object-Orientation


Technologies are Tools


Implementations are Products


REST Principles

Outline (REST Principles)

  1. Technologies and Implementations [3]
  2. REST Principles [9]
  3. REST Implementation [4]
  4. Conclusions [1]

Definition


Resources


State


Establishing a Common Model


Nouns


Verbs


POSTing


Content Types


REST vs. Web Services


REST Implementation

Outline (REST Implementation)

  1. Technologies and Implementations [3]
  2. REST Principles [9]
  3. REST Implementation [4]
  4. Conclusions [1]

REST Technologies


URIs


HTTP


XML


Conclusions

Outline (Conclusions)

  1. Technologies and Implementations [3]
  2. REST Principles [9]
  3. REST Implementation [4]
  4. Conclusions [1]

Better Services