AFAIK Fielding nie twierdził, że REST jest dobry, po prostu opisywał faktyczną architekturę sieci.
Myślę, że to trochę go zaniża. REST jest przecież wyliczeniem stylu architektonicznego , którego używał Fielding jako główny architekt specyfikacji HTTP / 1.1 .
Ale czy rzeczywiście istnieje powód, by sądzić, że REST jest pożądaną architekturą dla tej domeny? Czy istnieją dowody na to, że HATEOAS to korzystna zasada projektowania komunikacji między maszynami?
"To zależy". HATEOAS jest częścią jednolitego ograniczenia interfejsu REST.
Dzięki zastosowaniu ogólnej zasady inżynierii oprogramowania do interfejsu komponentu ogólna architektura systemu jest uproszczona, a widoczność interakcji poprawiona. Wdrożenia są oddzielone od świadczonych przez nie usług, co zachęca do niezależnej ewolucji. Kompromis polega jednak na tym, że jednolity interfejs obniża wydajność, ponieważ informacje są przesyłane w ustandaryzowanej formie, a nie takiej, która jest specyficzna dla potrzeb aplikacji. Interfejs REST został zaprojektowany w taki sposób, aby był wydajny w przypadku przesyłania dużych danych hipermedialnych, optymalizując go pod kątem typowego przypadku sieci, ale w wyniku czego interfejs nie jest optymalny dla innych form interakcji architektonicznych.
Zastanówmy się przez chwilę, co to znaczy. Gdy mam problem z routerem bezprzewodowym, mogę się z nim komunikować przy użyciu tej samej przeglądarki, której używam do przesyłania odpowiedzi na stos wymiany. W szczególności nie ma znaczenia, jakiej przeglądarki używam ani tego, czy moja przeglądarka ma kilka aktualizacji opóźnionych (lub wyprzedzających) w stosunku do oczekiwań routera. Nie ma znaczenia, że organizacja inżynierska, która napisała przeglądarkę, jest całkowicie niezależna od organizacji, która utworzyła interfejs routera.
To po prostu działa .
To oczywiście nie jest uniwersalne. Fielding w 2008 roku napisał:
Nie oznacza to, że uważam, że każdy powinien projektować własne systemy zgodnie ze stylem architektonicznym REST. REST jest przeznaczony do długotrwałych aplikacji sieciowych, które obejmują wiele organizacji. Jeśli nie widzisz potrzeby ograniczeń, nie używaj ich.
Ograniczenia tworzące styl architektoniczny REST zostały wybrane ze względu na właściwości, które wywołują; jeśli te właściwości nie są cenne w twoim przypadku użycia, powinieneś bezwzględnie rozważyć usunięcie odpowiednich ograniczeń.
Tam, gdzie maszyna do maszyny staje się trudna, to utrata przez człowieka zdolności rozmytego dopasowania do semantyki zapewnionej przez reprezentacje. Klienci mogą sobie poradzić znając tylko rodzaje mediów, ale zwykle człowiek patrzy na sygnały semantyczne, aby uzyskać znaczenie.
schema.org to jedna z części starań, aby stworzyć słownictwo do odczytu maszynowego; agenci maszyny używają klienta do znajdowania wskazówek semantycznych i stosują własne rozumienie znaczenia, aby wybrać właściwe działania do podjęcia.
Ale to praca; musisz zainwestować w opracowanie przyjaznych dla maszyn reprezentacji zasobów oraz zapewnienie, że reprezentacje te będą kompatybilne do przodu i wstecz, aby klienci mogli być rozwijani niezależnie.
Gdy jedna organizacja kontroluje zarówno klienta, jak i serwer, korzyści wynikające z tej niezależności są znacznie mniejsze, w takim przypadku ograniczenie może nie być właściwym wyborem architektonicznym.