HATEOAS - HATEOAS

Hypermedia jako silnik stanu aplikacji ( HATEOAS ) to ograniczenie architektury aplikacji REST, które odróżnia ją od innych architektur aplikacji sieciowych.

Dzięki HATEOAS klient wchodzi w interakcję z aplikacją sieciową, której serwery aplikacji dynamicznie dostarczają informacje za pośrednictwem hipermediów . Klient REST potrzebuje niewielkiej lub żadnej wcześniejszej wiedzy na temat interakcji z aplikacją lub serwerem poza ogólnym zrozumieniem hipermediów.

Natomiast klienci i serwery w architekturze CORBA (Common Object Request Broker Architecture) współdziałają za pośrednictwem stałego interfejsu współdzielonego przez dokumentację lub języka opisu interfejsu (IDL).

Ograniczenia nałożone przez HATEOAS rozdzielają klienta i serwer. Umożliwia to niezależną ewolucję funkcjonalności serwera.

Przykład

Klient użytkownika, który implementuje protokół HTTP, wysyła żądanie HTTP do interfejsu API REST za pomocą prostego adresu URL . Wszystkie kolejne żądania, które może wykonać klient użytkownika, są wykrywane w odpowiedziach na każde żądanie. Te rodzaje materiałów używanych do tych przedstawień, oraz stosunki łącza mogą one zawierać, są standaryzowane. Klient przechodzi przez stany aplikacji, wybierając łącza w reprezentacji lub manipulując reprezentacją w inny sposób, na który pozwala typ mediów. W ten sposób interakcja RESTful jest napędzana przez hipermedia, a nie informacje spoza pasma.

Na przykład to żądanie GET pobiera zasób konta, żądając szczegółów w reprezentacji JSON:

GET /accounts/12345 HTTP/1.1
Host: bank.example.com

Odpowiedź brzmi:

HTTP/1.1 200 OK

{
    "account": {
        "account_number": 12345,
        "balance": {
            "currency": "usd",
            "value": 100.00
        },
        "links": {
            "deposits": "/accounts/12345/deposits",
            "withdrawals": "/accounts/12345/withdrawals",
            "transfers": "/accounts/12345/transfers",
            "close-requests": "/accounts/12345/close-requests"
        }
    }
}

Odpowiedź zawiera następujące możliwe linki uzupełniające: POST wpłatę, wypłatę, przelew lub żądanie zamknięcia (aby zamknąć konto).

Na przykład później, po przekroczeniu konta, jest inny zestaw dostępnych linków, ponieważ konto jest przekroczone.

HTTP/1.1 200 OK

{
    "account": {
        "account_number": 12345,
        "balance": {
            "currency": "usd",
            "value": -25.00
        },
        "links": {
            "deposits": "/accounts/12345/deposits"
        }
    }
}

Teraz dostępny jest tylko jeden link: aby wpłacić więcej pieniędzy (przez POST do depozytów). W obecnym stanie pozostałe linki nie są dostępne. Stąd termin Engine of Application State . Możliwe działania różnią się w zależności od stanu zasobu.

Klient nie musi rozumieć każdego typu mediów i mechanizmu komunikacji oferowanego przez serwer. Zdolność do zrozumienia nowych typów nośników można uzyskać w czasie wykonywania za pomocą „ kodu na żądanie ” dostarczanego klientowi przez serwer.

Początki

Ograniczenie HATEOAS jest zasadniczą częścią funkcji „jednolitego interfejsu” REST, zgodnie z definicją w rozprawie doktorskiej Roya Fieldinga . Fielding dokładniej opisał tę koncepcję na swoim blogu.

Celem niektórych z tych i innych ograniczeń REST, wyjaśnia Fielding, jest „projektowanie oprogramowania w skali dziesięcioleci: każdy szczegół ma na celu promowanie długowieczności oprogramowania i niezależnej ewolucji. Wiele ograniczeń jest bezpośrednio przeciwnych krótkoterminowym Niestety, ludzie są dość dobrzy w projektowaniu krótkoterminowym i zwykle kiepskim w projektowaniu długoterminowym”.

Zobacz też

Bibliografia