Middle+
Porozprávaj o pravidle jednotného rozhrania (Uniform Interface).
sobes.tech AI
Odpoveď od AI
Pravidlo Uniform Interface je jedno zo šiestich architektonických obmedzení REST. Predpisuje, aby systém používal jednotný, štandardizovaný prístup k interakcii medzi klientom a serverom. To zjednodušuje a oddelí architektúru, zlepšuje viditeľnosť a uľahčuje nezávislý vývoj klienta a servera.
Komponenty Uniform Interface:
- Identifikácia zdrojov (Identification of resources): Zdroje musia byť jedinečne identifikovateľné (zvyčajne cez URI). Toto je základ pre štandardizovanú interakciu. Príklad:
/users/123,/products/ABC. - Manipulácia so zdrojmi cez ich reprezentácie (Manipulation of resources through representations): Klient dostáva reprezentáciu zdroja (napríklad v JSON alebo XML formáte), ktorá obsahuje dostatok informácií na zmenu alebo odstránenie zdroja na serveri. Stav zdroja na serveri možno zmeniť odoslaním upravenej reprezentácie.
- Samopopisné správy (Self-descriptive messages): Každá správa (žiadosť alebo odpoveď) musí obsahovať dostatok informácií na úplné pochopenie bez kontextu stavu servera alebo iných žiadostí. To zahŕňa metadáta: typ obsahu, informácie o cache, odkazy na iné zdroje atď.
HTTP/1.1 200 OK Content-Type: application/json Cache-Control: max-age=3600 { "name": "Example User", "links": [ { "rel": "self", "href": "/users/123" } ] } - Hypermedia ako motor stavu aplikácie (HATEOAS): Umožňuje klientovi dynamicky prechádzať medzi zdrojmi na základe hypermedialnych odkazov, ktoré server poskytuje v odpovedi. Klient nemusí vopred poznať všetky URI, okrem vstupného bodu. Server smeruje klienta cez dostupné akcie a zdroje.
Namiesto tvrdo zakódovaných ciest, klient zistí o možnosti zrušenia objednávky cez prítomnosť a obsah odkazu s{ "orderId": "A123", "status": "processing", "links": [ { "rel": "cancel", "href": "/orders/A123/cancel", "method": "POST" }, { "rel": "self", "href": "/orders/A123" } ] }rel: "cancel".
Jednotný rozhranie je kriticky dôležité pre škálovateľnosť a evolúciu RESTful systémov, pretože znižuje prepojenosť medzi komponentami.