Essential Reading on HTTP and REST

Okay, so it's a bit risky to refer to this giant of contemporary computer science as a horse. But, as the saying goes, this is straight from the horse's mouth. Trust me, it doesn't get any more authoritative than this!

Roy Fielding is co-author of the HTTP specification and the ubiquitous Apache Web Server. He created the Representational State Transfer (REST) paradigm as an architectural style for the Web. Since then REST has received much well-deserved attention.

His doctoral thesis (FREE PDF!) is a seminal work that contains an excellent discussion on the following.

  • Software architectures in general, well worth reading for the survey and rigor contained herein, especially given the lack of consensus on what entails an architecture definition
  • How network-based application architectures (e.g. the Web) are unique, an impressive discourse on the nature and function of the Internet
  • Why Fielding proposed the REST architectural style for distributed hypermedia systems.
  • Finally, Fielding uses the REST style as a mirror to illuminate areas of the Web that have gone rogue and require refactoring

System architectures are explained as follows.

  • An abstraction of the run-time elements of a software system, as distinct from software structures that describe the static code
  • Recursions of component/layer architectures down to the most basic system elements that cannot be further decomposed
  • One per operational phase of the system, e.g. start-up, initialization, normal processing, re-initialization, shutdown
  • A configuration of architectural elements (components, connectors, and data)
  • The realization of an architectural design, not the design itself or even the rationale behind the design
  • Compared in terms of the architectural properties or software qualities (relevant to the system domain) as induced by each architectural style (and the constraints therein)

Fielding defines architectural styles as named, coordinated sets of architectural constraints. He uses styles as a mechanism for categorizing architectures and for defining their common characteristics. Styles can be combined to form hybrid styles as long as their constraint don't conflict. Especially useful is Fielding's catalog of network-based architectural styles organized under the following categories.

  • Data-flow
  • Replication
  • Hierarchical
  • Mobile Code
  • Peer-to-Peer

It is generally felt that most post-graduate work produces theoretical results with limited practical applications. This is an example to be held up as both an exception and a model.

Finally, follow Roy Fielding on Twitter to receive a regular dose of his insights. (Thanks Alex!)


  1. Thanks for making us ordinary humans aware of REST. The TOC is very neat with each section being hyperlinked. Very portable style of presenting the thesis. Guess it is word but have to figure out how the TOC is only seen. Liked the way the abstract and acknowledgement is written. And this seems to have been produced in 2000 and now is 2011....Thanks again.

  2. you know, roy actually is on twitter ;)

  3. Alex, thanks! And, by the way, Twitter's people search sucks! ;-o


Post a Comment

Popular posts from this blog

Utility trailer buying guide

My Experiments with the PICAXE 08M2+

How to Select and Install Shelves