Representational State Transfer (REST) has gained widespread acceptance across the Web as a simpler alternative to SOAP and WSDL based Web services. In layman’s terms, REST is an architecture style or design pattern used as a set of guidelines for creating web services which allow anything connected to a network (web servers, private intranets, smartphones, fitness bands, banking systems, traffic cameras, televisions etc.) to communicate with one another via a shared common common communications protocols known as HyperText Transfer Protocol (HTTP). The same HTTP Verbs (GET, POST, PUT, DELETE etc.) used by web browsers to retrieve and display web pages, audio/video files, images etc. from remote servers and post data back to them when performing actions like filling out and submitting forms are used by all of the aforementioned devices/services to communicate with one another.
By leveraging and repurposing a lightweight and universal protocol like HTTP, software engineers and system architects are given a set of guidelines to use when designing RESTful web services for both new and existing products and services that contribute to what has become collectively known as the Internet of Things (IoT).
A simple example of designing a web service for managing employee data using an OData REST implementation might involve several methods, each corresponding to one of the HTTP verbs. A method like “Employees/GetEmployees” would be mapped to the GET verb (or “Employees/GetEmployee/12345” in the case of retrieving details for a single specific employee), handling all requests submitted to the web service, “Employees/AddEmployee” would be mapped to the POST verb, “Employees/UpdateEmployee” would be mapped to PUT and “Employees/DeleteEmployee” would be mapped to the DELETE verb. If the service were also exposing an interface to allow remote clients to manage consumer products the API would follow a similar naming convention but obviously specific to consumer products (i.e. Products/GetProducts, Products/AddProduct etc.). Any remote client that has access and is authorized to use any of these methods would be able to execute them provided that the remote client is capable of sending and receiving data using the HTTP protocol.
Technically speaking, it is an abstraction of the architecture of the World Wide Web (WWW); more precisely, REST is an architectural style consisting of a coordinated set of architectural constraints applied to components, connectors, and data elements, within a distributedhypermedia system. REST ignores the details of component implementation and protocol syntax in order to focus on the roles of components, the constraints upon their interaction with other components, and their interpretation of significant data elements.
The REST architectural style is also applied to the development of web services. One can characterize web services as “RESTful” if they conform to the constraints described in the architectural constraints section. RESTful web services are assumed to return data in XML and/or JSON format, the latter of which has been gaining more and more support and seems to be the data format of choice for many of the newer REST implementations.
Source of info: Wikipedia