Sobes.tech
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:

  1. Identyfikacja zasobów: Zasoby muszą być jednoznacznie identyfikowalne (zwykle przez URI). To podstawa standaryzowanej interakcji. Przykład: /uzytkownicy/123, /produkty/ABC.
  2. 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ę.
  3. 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"
        }
      ]
    }
    
  4. 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.