Every now and then someone brings up the Richardson Maturity Model of REST, and tries to support an argument by promising a promotion up to a higher level, or else threatening a demotion to a lower level.
The maturity model goes like this. At level one, you introduce addressable resources. At level two, you use HTTP verbs strictly. Finally level three is where you use hypermedia, and you are at REST.
Martin Fowler, who is awesome, has this page that describes it:
Unfortunately, Roy Fielding, who came up with the idea and the term of REST, had this to say:
So, by Roy’s strict criteria, hypermedia is a *precondition* of REST. Anything else should not call itself REST. So the maturity model actually looks like this:
Level One : not REST
Level Two : not REST
Level Three : REST
That’s why I’ve been realizing more and more that the last three years have been a big waste spinning circles around URIs and verbs. Spending time to graduate to level one or two of the maturity model is a huge waste of time, because if you want to be RESTful, you have to start at level three. Hypermedia is a constraint — it’s a precondition to getting into the REST stadium.