Representational State Transfer (REST) Architecture
Representational State Transfer (REST) architecture is a set of architectural principles that help in representing the state and the transition in web application in terms of application’s domain using standard Uniform Resource Identifiers (URI). The URI’s represent the state of an application and is translated by the browser, server or application to the internal needs. For example traditionally a URL like http://www.somesite.com/orderdetails.jsp?user=xyz&order=1234 represents a request to the application to bring back the order details for the user xyz for the order number 1234. This URL is more constrained to the internal methods of sending a HTTP request rather than a request representing an order request. In REST the order detail state in the application for user xyz for the order number 1234 would be represented as http://www.somesite.com/user/xyz/order/1234. A significant advantage in such a representation and access mechanism is the easy to understand URL. This can be followed throughout the application including the transitions through hyper links.
REST was formally defined by Roy T Fielding in his work on Software Architectures. It is worth mentioning that Roy T Fielding was also one of the co-founders of the famous Apache HTTP Server. The Web 2.0 era has graciously welcomed REST with open hands and is one of the highlights of the web sites that apply it. The hot Ruby on Rails has built in capability of REST. Java/J2EE technology by default did not have support to REST but a lightweight framework like Restlet can be used to achieve this. The FAQ section has good information about Restlet and references to REST. For not so technical readers, take a look at this blog article by Ryan “How I Explained REST to My Wife“.












