Middle+
Opowiedz o zasadzie jednolitego interfejsu (Uniform Interface).
sobes.tech AI
Odpowiedź od AI
Zasada Jednolitego Interfejsu jest jedną z sześciu ograniczeń architektonicznych REST. Nakazuje, aby system korzystał z jednolitego, standaryzowanego podejścia do komunikacji między klientem a serwerem. Ułatwia to i oddziela architekturę, poprawia widoczność i ułatwia niezależny rozwój klienta i serwera.
Składniki Jednolitego Interfejsu:
- Identyfikacja zasobów: Zasoby muszą być jednoznacznie identyfikowalne (zwykle przez URI). To podstawa standaryzowanej interakcji. Przykład:
/uzytkownicy/123,/produkty/ABC. - Manipulacja zasobami przez ich reprezentacje: Klient otrzymuje reprezentację zasobu (np. w formacie JSON lub XML), która zawiera wystarczająco informacji do zmiany lub usunięcia zasobu na serwerze. Stan zasobu na serwerze można zmienić, wysyłając zmienioną reprezentację.
- Samodzielnie opisujące się wiadomości: Każda wiadomość (żądanie lub odpowiedź) powinna zawierać wystarczające informacje, aby można ją było w pełni zrozumieć bez kontekstu stanu serwera lub innych żądań. Obejmuje to metadane: typ treści, informacje o cache, linki do innych zasobów itp.
HTTP/1.1 200 OK Content-Type: application/json Cache-Control: max-age=3600 { "name": "Przykładowy Użytkownik", "links": [ { "rel": "self", "href": "/uzytkownicy/123" } ] } - Hipermedia jako silnik stanu aplikacji (HATEOAS): Umożliwia klientowi dynamiczne przechodzenie między zasobami, opierając się na hiperlinkach dostarczonych przez serwer w odpowiedzi. Klient nie musi znać wszystkich URI z wyprzedzeniem, tylko punkt wejścia. Serwer kieruje klienta do dostępnych działań i zasobów.
{ "orderId": "A123", "status": "w trakcie realizacji", "links": [ { "rel": "anuluj", "href": "/zamowienia/A123/anuluj", "method": "POST" }, { "rel": "self", "href": "/zamowienia/A123" } ] }
Zamiast sztywnych ścieżek, klient dowiaduje się o możliwości anulowania zamówienia na podstawie obecności i zawartości linku z rel: "anuluj".
Jednolity interfejs jest kluczowy dla skalowalności i ewolucji systemów RESTful, ponieważ zmniejsza powiązanie między komponentami.