Glossary Term
REST
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.