The Web can be visualized as a large scale distributed network with plethora of offerings… Web in itself is not the solution to business applications, but it’s the way in which the web is integrated and interfaced (through web services) is of prime importance. Leonard Richardson has done a great job of putting up a maturity model that can better classify services on the web and describes three levels of maturity. Let’s discuss it in detail..

Level 0: This refers to the most elementary level maturity of service. Web Services that use HTTP as tunnel for remote procedure invocation on a single URI come under Level 0 maturity level. Typically only one HTTP Verb (POST or GET) used for communication to the end point. SOAP Web Services that work with XML Payload are an example of this maturity level.

Level 1: Services at this level of maturity use multiple URIs (logical resources) but use single HTTP Verb (GET or POST). Hence instead of making call to one URIs, call can be made to multiple resources to perform different jobs.

Level 2: At this level, services use multiple logical resources and also multiple HTTP Verbs for communication. Idea is to closely mimic the use of Verbs to the operation being performed. For instance, GET would just read information on a resource, while POST would create new resource. PUT would update and DELETE will remove the resource. CRUD Web services are an excellent example of Level 2 Services.

Level 3: Services that work on HATEOAS (Hypermedia As The Engine Of Application State) principle operate at Level 3 maturity. In this level, services provide links to other resources that client maybe interested in. RESTful Web Services fall under this category..


Rest In Practice

Richardson Maturity Model