W3C home > Mailing lists > Public > www-tag@w3.org > August 2002

FW: 1 page REST summary

From: David Orchard <dorchard@bea.com>
Date: Mon, 26 Aug 2002 13:15:17 -0700
To: <www-tag@w3.org>
Message-ID: <006701c24d3e$ac2e9400$130ba8c0@beasys.com>

My summary of Roy's REST chapters, now on a public list.

-----Original Message-----
From: 'Roy T. Fielding' [mailto:fielding@apache.org]
Sent: Monday, March 11, 2002 7:49 AM
To: tag@w3.org
Cc: David Orchard
Subject: 1 page REST summary

This is mostly Dave's work of compressing my REST chapters into a one
page summary.  I've made a few minor changes, right now, but I think it
will require major edits before being readable by someone unfamiliar
with the topic.

Note that this is still different from what I think should be one of
the major sections of the arch document, which would be more of a
discussion of just "Application State using Hypertext".



REST (Representational State Transfer) is an architecture style that
approximates the World-Wide Web.  REST provides a set of architectural
constraints that, when applied as a whole, emphasizes scalability of
component interactions, generality of interfaces, independent deployment of
components, and intermediary components to reduce interaction latency,
enforce security, and encapsulate legacy systems.  REST consists of a set of
constraints, or invarients, that are chosen for the properties they induce
on the target architecture, in this case the Web.

The REST constraints are:
- Client/Server, the separation of rendering concerns from the data model
and control logic concerns
- Stateless, that each request from client to server contains all the
necessary data for a server to understand the request.
- Caching, that resources are labelled as cachable or not, and intermediary
nodes between the client and server can respond on behalf of a server with
the cached data.
- Uniform Interface, the consistent constraints on interface between
components, specifically resource identification, resource manipulation
through representations, self-describing messages, and messages as the
embodiment of application state.
- Layering, the encapsulation of each component so that components "know"
only about the components they are interacting with.
- optional Code-on-demand, the ability for clients software to download and
execute code, such as Java Applets, ActiveX controls, scripts, XSLT.

REST focuses on the roles of components, the constraints upon their
interaction with other components, and their interpretation of significant
data elements.  REST ignores the details of component implementation and
protocol syntax.  REST components communicate by transferring a
representation of a resource in a format matching one of an evolving set of
standard data types, selected dynamically based on the capabilities or
desires of the recipient and the nature of the resource. Whether the
representation is in the same format as the raw source, or is derived from
the source, remains hidden behind the interface.

Typical hypertext systems support one of three possible styles
of data representation: 1) render the data where it is located and send a
fixed-format image to the recipient; 2) encapsulate the data with a
rendering engine and send both to the recipient; or, 3) send the raw data to
the recipient along with metadata that describes the data type, so that the
recipient can choose their own rendering engine.  The Web provides a hybrid
of all three options by focusing on a shared understanding of data types
with metadata, but limiting the scope of what is revealed to a standardized

The key abstraction of information in the Web is a resource. Any information
that can be named can be a resource.   The Web uses a resource identifier to
identify the particular resource involved in an interaction between
components.  The Web relies on the author choosing a resource identifier
that best fits the nature of the concept being identified.

Web components perform actions on a resource by using a representation to
capture the current or intended state of that resource and transferring that
representation between components.  A representation consists of data,
metadata describing the data, and, on occasion, metadata to describe the
metadata.  Response messages may include both representation metadata and
resource metadata.  The data format of a representation is known as a media
type. A representation can be included in a message and processed by the
recipient according to the control data of the message and the nature of the
media type

Web components perform various roles in interactions.  User agents,
gateways, proxies, and origin servers are the main roles that a component
can act in.  A component may act in different roles depending upon the
Received on Monday, 26 August 2002 16:27:41 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 22:55:53 UTC