Principles and History of REST
– REST is a software architectural style that defines constraints for distributed hypermedia systems.
– REST emphasizes uniform interfaces, independent deployment of components, and loose coupling between client and server.
– REST was introduced and defined by Roy Fielding in 2000.
– The Web started to become widely used in 1993-1994, leading to the need for a formal Web architecture.
– Fielding, involved in creating primary Web standards, created the REST architectural style over the next six years.
Architectural Properties and Constraints of REST
– REST is designed for client-server applications and promotes loose coupling.
– REST provides a uniform addressing protocol, text-based transfer of information, and enables robustness, independent deployment, and large-grain data transfer.
– REST affects performance, scalability, simplicity, modifiability, visibility, portability, and reliability.
– REST defines six guiding constraints, including client-server architecture, statelessness, cacheability, uniform interface, layered system, and code on demand.
– These constraints improve various non-functional properties of REST.
Client-Server Architecture and Stateless Protocol
– Client-server architecture separates user interface and data storage concerns, improving portability and simplifying server components.
– Stateless protocol means no session information is retained by the server, improving scalability and allowing independent evolution of components.
– Relevant session data is sent by the client in each packet of information.
Cacheability and Layered System
– Clients and intermediaries can cache responses, improving scalability and performance.
– Cache can be stored in client machines, browser cache storage, or Content Delivery Networks (CDNs).
– Layered system allows clients to be unaware of intermediaries, enabling load balancing, shared caches, and separate security layers.
– Intermediary servers can call multiple other servers to generate a response.
Uniform Interface, Classification Models, and Applications of REST
– Uniform interface simplifies and decouples the architecture, allowing resource identification, manipulation, self-descriptive messages, and dynamic discovery of available resources.
– Classification models like Richardson Maturity Model and HTTP-based API classification assess adherence to REST design principles.
– RESTful APIs adhere to REST architectural constraints, use standards like HTTP, URI, JSON, and XML, and are widely used in web development.
– RESTful services are lightweight, easier to develop and maintain, have better performance, and are suitable for resource-oriented architectures.
– Semantic Web Services combine RESTful principles with semantic technologies, enabling automatic discovery, composition, and enhancing interoperability and integration of distributed systems.
– RESTful services are highly scalable, platform-independent, widely used in mobile app development, and the foundation of popular web APIs. They are suitable for building distributed systems and microservices architectures.
This article may be too technical for most readers to understand.(October 2020) |
REST (Representational state transfer) is a software architectural style that was created to guide the design and development of the architecture for the World Wide Web. REST defines a set of constraints for how the architecture of a distributed, Internet-scale hypermedia system, such as the Web, should behave. The REST architectural style emphasises uniform interfaces, independent deployment of components, the scalability of interactions between them, and creating a layered architecture to promote caching to reduce user-perceived latency, enforce security, and encapsulate legacy systems.
REST has been employed throughout the software industry to create stateless, reliable Web-based applications. An application that adheres to the REST architectural constraints may be informally described as RESTful, although this term is more commonly associated with the design of HTTP-based APIs and what are widely considered best practices regarding the "verbs" (HTTP methods) a resource responds to while having little to do with REST as originally formulated—and is often even at odds with the concept.