Web Services

RESTing the Geeky Way

Update on 11/30/2006 @ 1pm: I fixed an error below where I should have said Roy Fielding instead of Ray. Thanks Mark Baker!

Although I haven’t had much time for leisure reading lately, I have taken a few minutes here and there to study up on a little something called Representational State Transfer, usually referred to by its abbreviation, REST. REST is different way of thinking about web application architecture using nouns (resources represented by URLs) and verbs (HTTP methods GET, POST, PUT, and DELETE). For a really easy to understand overview, see Ryan Tomayko’s How I Explained REST to My Wife.

The concept of REST originated back in 2000 with Roy Fielding’s dissertation titled Architectural Styles and the Design of Network-based Software Architectures, but has recently gained popularity as a style of web services. This is the context I’m looking at REST from too, having recently become a key addition to the latest version of the Ruby on Rails framework I’m developing programs with right now.

What I really like about the idea of RESTful web applications is their simplicity. Some of the biggest corporates (Microsoft, IBM, Sun, etc.) have created an absurdly long list of web services specifications that are so complex you have no choice but to spend big money on their server software and development tools if you want to use them correctly.

The REST approach is more appealing: Use what we have right now (HTTP) instead of reinventing everything all over again (SOAP). I have no doubt that some really complex applications and systems integration situations will require equally complex web services, but the other 80-90% of them would likely do just fine as a RESTful app.

The pragmatic ideas offered in the REST style remind me of the Web Hypertext Application Technology Working Group (WHATWG), an unofficial collaboration of browser makers working to improve HTML outside of the multi-year processes of standards making bodies (the W3C in this case). Instead of specing something to dead so that it works “in theory”, they both want solutions to real-world problems now. I’m definitely on board with that!