Opinion and commentary about Mac and iOS applications, publishing and content consumption behavior, web and cloud architectures
September 6, 2009

REST - Essential Resources

Everyone interested in learning or applying REST should definitely start his journey by reading Roy Fielding’s Architectural Styles and the Design of Network-based Software Architectures ☞ which focuses on the rationale behind the design of the modern Web architecture and how it differs from other architectural styles.

Over time, I’ve put together a list of articles that introduced me to REST and helped me learn the concepts and how to apply them. Anyways, I’m not going to include all my Delicious tagged bookmarks here, but only quote the ones that I think we’ll give a good head start.

A Brief Introduction to REST

This article written by Stefan Tilkov talks about the REST five key principles:

  • Give every “thing” an ID
  • Link things together
  • Use standard methods
  • Resources with multiple representations
  • Communicate statelessly

Addressing Doubts about REST ☞

Another great article from Stefan Tilkov:

Invariably, learning about REST means that you’ll end up wondering just how applicable the concept really is for your specific scenario. And given that you’re probably used to entirely different architectural approaches, it’s only natural that you start doubting whether REST, or rather RESTful HTTP, really works in practice, or simply breaks down once you go beyond introductory, “Hello, World”-level stuff.

Hypermedia in RESTful applications ☞

Mark Baker’s article is about that “Link things together principle” (formally known as hypermedia):

[…] there’s a sub-constraint that goes by the unwieldly name of “Hypermedia as the engine of application state”, which is arguably the most important constraint of REST in the sense that it alone provides the bulk of the “shape” of RESTful systems as we know them.

RESTful HTTP in practice ☞

Once you got used to the REST concepts, the very next thing that might prove useful is to see real examples. Gregor Roth’s article is a good intro to how to design your RESTful HTTP app:

Applications which implement a dedicated architecture style will use the same patterns and other architectural elements such as caching or distribution strategies in the same way.

REST Anti-Patterns ☞

When people start trying out REST, they usually start looking around for examples – and not only find a lot of examples that claim to be “RESTful”, or are labeled as a “REST API”, but also dig up a lot of discussions about why a specific service that claims to do REST actually fails to do so.

RESTful Web Services There is also the excellent book written by Leonard Richardson and Sam Ruby: RESTful Web Services: Web Services for the real world ☞:

You’ve built web sites that can be used by humans. But can you also build web sites that are usable by machines? That’s where the future lies, and that’s what this book shows you how to do. Today’s web service technologies have lost sight of the simplicity that made the Web successful. This book explains how to put the “Web” back into web services with REST, the architectural style that drives the Web.

If there are other resources that you consider fundamental to learning and applying REST please drop a comment.

Disclaimer: Most of the linked articles have been published on InfoQ, but their inclusion here is based on my learning experience only.

My apologies for the typos in the post. If you find more please do let me know.