What is the RESTful architecture style and what is it good for? Well I am here to break that down for you. REST stands for representational state transfer, and it is an interface that can be implemented in order to help with abstracting resources. In order for a system to be considered RESTful, they must implement 5 guiding principles. The first principle is client-server which deals with the separation of user-interface and data storage. The next principle is that it must be stateless, meaning when information is requested, all the information must be present and cannot be stored on the server. The next principle of REST is that the data must be labeled either cacheable or non-cacheable. If the information is cacheable, it is stored on a client cache. The fourth principle deals with having a uniform interface. The next principle is the layered system which allows for a hierarchy of layers to implement constraints.
Now that the principles have been laid out, the next main part of REST is the information and data it deals with. A resource in REST is the abstraction of information. Resources can be anything containing a name from documents, pictures, and so on. REST then uses resource identifiers to be able to find what resource is needed. Resources contain resource representation, which is a timestamp of the resource containing the data, metadata, and hypermedia links. REST contains resource methods which can be used for working with the data. Many people associate REST with HTTP methods of GET/PUT/POST/DELETE however since REST has a uniform interface, the user will be able to decide which resource methods to use. However, with REST you are able to utilize these HTTP methods in order to help with resources. The most common implementation has GET to retrieve resources, PUT to change or update a resource and POST to create a resource. Obviously DELETE is used to delete resources.
RESTful API’s are very beneficial when working with cloud computing and working with the web. Because REST does not store any information between executions; is stateless, this allows for the for scaling. This also means that the if anything fails, it will be easy to re-work since nothing was stored on the server. This makes it particularly useful for websites as well because a user will be able to freely interact with the website while not storing any information with-in it. If you want to read more on REST and RESTful API, look into these two websites.