To new readers of my blog. This article was written many years ago, and is no longer the entirety or core of what I believe. It remains here as a historical stepping stone to newer ideas.
There’s been a lot of buzz on RESTful Web Services  and yet there are still far too many developers that believe they may implement it by simply using a Rest class provided by their favourite framework.
I wonder if this has been helped by the obtuse or long-winded articles that are out there on the web and so here is my attempt at explaining the concept as concisely as possible:
Building a RESTful web service requires that you stop building the same concepts that already exist in HTTP as part of your API and instead build a uniform API  that inherits the HTTP Interface  by (a.) treating URLs as resources, (b.) implementing CRUD using the HTTP methods POST, GET, PUT, and DELETE; and additionally using POST for operations with side-effects such as financial transactions, (c.) using the HTTP response codes and header data correctly, and by (d.) identifying and interconnecting resources by URIs in the responses, hence being hypertext-driven (HATEOAS).