REST API
REST APIs використовують HTTP методи для керування ресурсами, ідентифікованими URI, забезпечуючи масштабовані, гнучкі веб-сервіси.
REST APIs моделюють додатки як колекцію ресурсів, ідентифікованих унікальними URI. Клієнти взаємодіють з цими ресурсами, використовуючи фіксований набір операцій, які зазвичай відображаються на HTTP методи (GET, POST, PUT, PATCH, DELETE). Ключові обмеження включають: statelessness (відсутність контексту клієнта на стороні сервера між запитами), uniform interface (стандартизовані методи, URI та типи медіа), client–server separation, cacheability та layered system. Репрезентації (зазвичай JSON або XML) передаються через HTTP, а content negotiation, versioning та HATEOAS (опціонально) керують взаємодією клієнта. REST є architectural style, а не протоколом, і хоча він добре узгоджується з веб, практичний RESTful дизайн вимагає балансування між over-fetching, under-fetching та питаннями безпеки, такими як authentication, authorization та transport security (TLS).
graph LR
Center["REST API"]:::main
Pre_http["http"]:::pre --> Center
click Pre_http "/terms/http"
Pre_api["api"]:::pre --> Center
click Pre_api "/terms/api"
Rel_apache_http_server["apache-http-server"]:::related -.-> Center
click Rel_apache_http_server "/terms/apache-http-server"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 Простими словами
Як автомат з їжею: кожен товар має номер. Ви натискаєте кнопку (GET), щоб отримати товар. Автомат не пам'ятає вас після покупки.
🤓 Expert Deep Dive
REST вимагає єдиного інтерфейсу та кешування. HATEOAS дозволяє клієнту динамічно дізнаватися про доступні дії через посилання у відповіді.