Hypermedia As The Engine Of Application State

It’s been a while since I’ve blogged about anything – way too busy or maybe just not dedicated enough.

In the meantime, Nigeria lost in QF to Ghana, Arsenal is on top of the Premiership, the Patriots lost, Pau is in L.A., McCain has practically won the GOP ticket and I’ve been developing a REST-based system using Microsoft’s WCF technology. I’ll have to post on my WCF experiences later.

However, during this exercise, its become very clear to me that hypermedia and application state are probably the two most important things in a RESTful system. How an application transitions from one state to the next via links (essentially what you do with your browser) is primarily what a designer should be focused on. The resources, URIs etc just begin to fall into place after that. The representation you use becomes less of an issue as one realizes that in order to keep the engine running, links must be provided.

Most SOAP-based web services cannot provide an application with links on what to do next. This may be okay if there are no more state transitions, but how often is this really the case? To me, this is the most important difference between building a MESTian web service or a RESTian web service. If your RESTful web service, does not leverage hypermedia, its not that much better than a MESTian web service.

Equally as important is the discipline to avoid URI construction in clients besides basic GETs. Doing this will lead to much pain and suffering.

Here is another good article by Peter Williams that addresses this.

Advertisements

About Ebenezer

culture hack. contrarian. change artiste. speaker. writer. silo-connector. entrepreneur. totally human. ff at your own risk. :-)
This entry was posted in Design and Architecture and tagged , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s