# RESTful [[api|API]]
Everything is a resource (noun) instead of action (verb) -- different from
[[rpc|RPC]].
> [!QUOTE]
>
> REST provides a set of architectural constraints that, when applied as a
> whole, emphasizes scalability of component interactions, generality of
> interfaces, independent deployment of components, and intermediary components
> to reduce interaction latency, enforce security, and encapsulate legacy
> systems. -- the REST dissertation
- Architectural properties: Performance, Scalability, Simplicity, Modifiability,
Visibility, Portability, Reliability.
> [!summary] Six Guiding Principles
>
> - Uniform Interface
> - Client-Server
> - Stateless
> - Cacheable
> - Layered System
> - Code on Demand (optional)
## Resources
- [REST API Tutorial](https://restfulapi.net/)
- [Naming Convention](https://restfulapi.net/resource-naming/)
- [What is a REST API? | RedHat](https://redhat.com/en/topics/api/what-is-a-rest-api)
- [What is a REST API? | IBM](https://ibm.com/think/topics/rest-apis)