Nie rozumiem korzyści dla HATEOAS dla interfejsów API przeznaczonych do użytku przez programy (w przeciwieństwie do ludzi przeglądających interfejs API bezpośrednio). Jasne, że klient nie jest powiązany ze schematem adresu URL, ale jest związany ze schematem danych, co jest moim zdaniem tym samym.
Załóżmy na przykład, że chcę wyświetlić element zamówienia, załóżmy, że odkryłem lub znam już adres URL zamówienia.
HATEOAS:
order = get(orderURL);
item = get(order.itemURL[5]);
nienawiści nienawiści:
order = get(orderURL);
item = get(getItemURL(order,5));
W pierwszym modelu muszę wiedzieć, że obiekt zamówienia ma pole itemURL. W drugim modelu muszę wiedzieć, jak skonstruować adres URL elementu. W obu przypadkach muszę „wiedzieć” coś z wyprzedzeniem, więc co HATEOAS faktycznie dla mnie robi?
web-development
rest
Tempo
źródło
źródło
get(orderURL);
powinienem ci powiedziećthe fact that the order object has an itemURL field
.Odpowiedzi:
Jedną różnicą jest to, że schemat jest, mam nadzieję, standardem lub przynajmniej może być ponownie wykorzystany przez innych.
Załóżmy na przykład, że używasz interfejsu API Twittera i chcesz również obsługiwać StatusNet (lub zamiast tego). Ponieważ używają tego samego modelu danych co Twitter, jeśli interfejs API jest zgodny z HATEOAS, teraz wystarczy zmienić główny adres URL. Jeśli tak się nie stanie, musisz teraz zmienić każdy pojedynczy adres URL z kodu.
Oczywiście, jeśli i tak musisz zmienić kod, aby umieścić adres URL punktu wejścia usługi, może to nie wydawać się tak pomocne. Naprawdę świeci, jeśli ten adres URL jest wstawiany dynamicznie; na przykład, jeśli budujesz usługę taką jak Twillio, która będzie współdziałać z własnym interfejsem API użytkownika.
źródło
Eksplorowalny interfejs API: Może to brzmieć trywialnie, ale nie lekceważ potęgi eksplorowanego interfejsu API. Możliwość przeglądania danych znacznie ułatwia programistom klientów tworzenie mentalnego modelu API i jego struktur danych.
Dokumentacja wbudowana: Użycie adresów URL jako relacji między linkami może prowadzić programistów klientów do dokumentacji.
Prosta logika klienta: klient, który po prostu podąża za adresami URL, a nie sam je tworzy, powinien być łatwiejszy do wdrożenia i utrzymania.
Serwer przejmuje własność struktur URL: użycie hipermediów usuwa zakodowaną na stałe wiedzę klienta na temat struktur URL używanych przez serwer.
Przesyłanie zawartości do innych serwisów: Hypermedia jest niezbędna podczas przesyłania zawartości do innych serwerów (na przykład CDN).
Wersjonowanie za pomocą linków: Hypermedia pomaga w wersjonowaniu interfejsów API.
Wiele implementacji tej samej usługi: Hypermedia jest koniecznością, gdy istnieje wiele implementacji tej samej usługi (a jeden klient musi uzyskać dostęp do więcej niż jednej z nich).
Dokładne objaśnienie tych punktów można znaleźć tutaj: http://soabits.blogspot.no/2013/12/selling-benefits-of-hypermedia.html
źródło