REST is an architectural style that conforms to the web standards such as using HTTP verbs and URIs. It is bound by the following principles:
All resources are identified by the URIs
All resources can have multiple representations
All resources can be accessed/modified/created/deleted by standard HTTP methods
There is no state information on the server
REST is bound by the principle of statelessness. Each request from the client to the server must have all the details to understand the request. This helps to improve visibility, reliability, and scalability for requests.
Visibility is improved, as the system monitoring the requests does not have to look beyond one request to get details. Reliability is improved as there is no check-pointing/resuming in case of partial failures. Scalability is improved because the number of requests that can be processed by the server increases, as the server is not responsible for storing any state.
Note
Roy Fielding's dissertation on the REST architectural style provides details on the statelessness of REST. Check http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm for more information.
With this initial introduction to the basics of REST, we shall cover the different maturity levels and how REST falls in it in the following section.