REST
Also known as: Representational State Transfer
Fielding's architectural style for distributed hypermedia systems.
Representational State Transfer is an architectural style for distributed hypermedia systems defined by Roy Fielding in his 2000 doctoral dissertation. REST imposes constraints (statelessness, uniform interface, client-server separation, layered system, cacheability, code-on-demand) that yield desirable properties for web-scale systems including scalability and evolvability. The style was derived by analyzing what made the early web successful and is now the dominant architectural pattern for web APIs, though most APIs called 'REST' violate one or more of Fielding's original constraints.
Core components
- Statelessness
- Uniform interface (resources, representations, self-descriptive messages, HATEOAS)
- Client-server separation
- Layered system
- Cacheability
- Code-on-demand (optional)
Primary use case
Designing web APIs and distributed hypermedia systems intended to scale across the open internet.
Common criticisms
- Most 'REST' APIs are not actually RESTful (HATEOAS is widely ignored)
- HTTP semantics are often misused
- less efficient than RPC for high-throughput service-to-service calls
- doesn't naturally fit real-time or streaming use cases.
Lineage
- Siblings
- SOAP, GraphQL, gRPC, Hexagonal Architecture