Representational State Transfer (REST)

Web Architecture (INFO 290-03)

Erik Wilde, UC Berkeley School of Information
2007-09-20
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

Outline (Technologies and Implementations)

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

Object-Orientation

Technologies are Tools

Implementations are Products

Outline (REST Principles)

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

Definition

Resources

State

Establishing a Common Model

REST Triangle

rest-triangle.png

Nouns

Verbs

POSTing

Content Types

REST vs. Web Services

Outline (REST Implementation)

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

REST Technologies

URIs

HTTP

XML

Outline (Conclusions)

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

Better Services