Representational state transfer is an architectural style for distributed hypermedia systems.
REST ignores the details of component implementation and protocol syntax and focuses on the roles of components, the constraints on their interactions, and their interpretation of data elements. REST components communicate by transferring a representation of a resource in a format that matches the capabilities or desires of the recipient and the nature of the resource. This set of architectural constraints emphasizes the scalability of interactions among interfaces and independent deployment of components for the sake of reducing latency and enforcing security.
The Pros of REST include: its flexibility, mobile-friendliness, and appropriateness for Internet applications. REST was developed to be able to return data in various formats such as JSON and YAML. It works well with cloud technology and profile restrictions. The cons of RESTful web services are that they are bound by six architectural constraints. They must use a uniform interface, be client-server based, capable of stateless operations, depend on caching and layered system architecture, and transmit code on demand, resulting in a steep learning curve for novice developers.
The American computer scientist Roy Fielding began popularizing the technology in 2000 with his doctoral dissertation, Architectural Styles and the Design of Network-Based Software Architectures, at UC Irvine.