W przypadku start-upu SaaS, w który jestem zaangażowany, tworzę zarówno interfejs API RESTful, jak i kilka aplikacji klienckich na różnych platformach, które go używają. Myślę, że zrozumiałem API, ale teraz zwracam się do klientów. Czytając o REST, widzę, że kluczową częścią REST jest odkrywanie , ale wydaje się, że istnieje wiele dyskusji między dwiema różnymi interpretacjami tego, co naprawdę oznacza odkrycie:
Odkrycie programisty : programista zakodował na stałe w kliencie duże ilości szczegółów interfejsu API, takich jak identyfikatory URI zasobów, parametry zapytań, obsługiwane metody HTTP i inne szczegóły, które odkryli podczas przeglądania dokumentacji i eksperymentowania z odpowiedziami interfejsu API. Ten typ wykrywania IMHO wymaga fajnego powiązania i pytania o wersję API i prowadzi do twardego sprzężenia kodu klienta z API. Wydaje się, że niewiele lepsze niż przy korzystaniu z dobrze udokumentowanej kolekcji RPC.
Wykrywanie w czasie wykonywania - sama aplikacja kliencka jest w stanie dowiedzieć się wszystkiego, czego potrzebuje, z niewielką ilością informacji spoza pasma lub bez nich (prawdopodobnie tylko ze znajomością typów mediów, z którymi obsługuje interfejs API). Linki mogą być gorące. Jednak aby interfejs API był bardzo wydajny, wydaje się, że potrzeba wielu szablonów linków dla parametrów zapytania, co powoduje, że informacje spoza pasma wracają. Możliwe są inne trudności, o których jeszcze nie myślałem, ponieważ nie dotarłem do tego punktu w rozwoju. Ale podoba mi się pomysł luźnego połączenia.
Odkrywanie środowiska wykonawczego wydaje się być świętym Graalem REST, ale widzę bardzo mało dyskusji na temat tego, jak wdrożyć takiego klienta. Prawie wszystkie źródła REST, które znalazłem, zakładają wykrywanie przez programistów. Czy ktoś zna jakieś zasoby wykrywania środowiska wykonawczego? Najlepsze praktyki? Przykłady czy biblioteki z prawdziwym kodem? Pracuję w PHP (Zend Framework) dla jednego klienta. Objective-C (iOS) dla drugiego.
Czy wykrywanie w środowisku wykonawczym jest realistycznym celem, biorąc pod uwagę obecny zestaw narzędzi i wiedzę społeczności programistów? Mogę napisać do mojego klienta, aby traktował wszystkie identyfikatory URI w sposób nieprzejrzysty, ale pytanie, jak to zrobić najskuteczniej, jest kwestią, szczególnie w przypadku połączeń o niskiej przepustowości. W każdym razie identyfikatory URI to tylko część równania. A co z szablonami odsyłaczy w kontekście środowiska wykonawczego? Co powiesz na komunikację, jakie metody są obsługiwane, poza wysyłaniem wielu żądań OPCJI?