Dla startupu SaaS, w który jestem zaangażowany, buduję zarówno RESTful Web API, jak i kilka aplikacji klienckich na różnych platformach, które go zużywają. Wydaje mi się, że mam do czynienia z API, ale teraz zwracam się do klientów. Jak czytałem o odpoczynku, widzę, że kluczowym elementem reszta jest odkrycie, ale nie wydaje się być dużo debaty między dwoma różnymi interpretacjami tego, co naprawdę oznacza odkrycie:Wykrywanie RESTful API Runtime/HATEOAS Projektowanie klienta
Developer discovery: Programista koduje w kliencie obfite ilości szczegółów API, takich jak identyfikator URI zasobu, parametry zapytania, obsługiwane metody HTTP i inne szczegóły, które odkrył podczas przeglądania dokumentów i eksperymentowania z odpowiedziami API. Ten typ wykrywania IMHO wymaga fajnego powiązania i pytania o wersję interfejsu API i prowadzi do twardego sprzężenia kodu klienta z interfejsem API. Nie ma to większego znaczenia niż przy użyciu dobrze udokumentowanego zbioru RPC.
środowiska odkrycie - (. Można przypuszczać, że tylko znajomość rodzajów mediów zajmuje API wyglądu) Aplikacja klient sam jest w stanie dowiedzieć się wszystko, co potrzebne z małym lub żadnym out-of-band informacji linki mogą być gorącym. Ale aby API było bardzo wydajne, wydaje się, że wiele szablonów linków do parametrów zapytań jest potrzebnych, co sprawia, że informacje z poza pasma z powrotem pojawiają się. Są jeszcze inne problemy, o których jeszcze nie pomyślałem, ponieważ nie mam doszedłem do tego punktu w rozwoju. Ale podoba mi się pomysł luźnego sprzężenia.
Wykrywanie czasu pracy wydaje się być świętym graalem REST, ale widzę cenną dyskusję o tym, jak wdrożyć takiego klienta. Prawie wszystkie znalezione źródła REST wydają się zakładać wykrycie programisty. Ktoś wie o niektórych zasobach wykrywania środowiska wykonawczego? Najlepsze praktyki? Przykłady lub biblioteki z prawdziwym kodem? Pracuję w PHP (Zend Framework) dla jednego klienta. Objective-C (iOS) dla drugiego.
Czy odkrywanie Runtime jest realistycznym celem, biorąc pod uwagę obecny zestaw narzędzi i wiedzę w społeczności programistów? Mogę napisać mojego klienta, aby traktował wszystkie URI w nieprzejrzysty sposób, ale jak to zrobić najlepiej, to jest pytanie, szczególnie w przypadku połączeń o niskiej przepustowości. W każdym razie identyfikatory URI są tylko częścią równania. A co z linkiem do szablonów w kontekście Runtime? Co powiesz na komunikowanie się, jakie metody są obsługiwane, poza wysyłaniem dużej liczby żądań OPTIONS?
Po prostu lekceważenie referencji OPCJI. Możesz użyć nagłówka "Zezwól" do przekazania dozwolonych operacji na zasobach poza żądaniem OPCJI. Roy Fielding posunął się nawet do uznania nagłówka jako formy hipertekstu - patrz [tutaj] (http://tech.groups.yahoo.com/group/rest-discuss/message/14432). – paulkmoore
tats a gr8 pytanie, kluczowe kwestie są podane listę odpowiednich metod, czy klient powinien być w stanie tworzyć adresy URL do regularnej operacji CRUD, czy będzie to nazywane "poza pasmem"? Powiedzmy, że jeśli udostępnimy linki do operacji CRUD, to jak robisz "formula" w jsonie? Może być, jeśli przy używaniu określonych typów mediów nie trzeba robić "formularzy", ale wat jest standardowym sposobem odkrywania typów mediów (np. Schematu json), czy proces odkrywania schematu będzie uważany za "nie-z- zespół "dla klientów? – redzedi
xhtml wygląda tak dobrze i płynnie, ale jeśli musisz zrobić json, tat, jak sądzę, jest raczej amorficzny teraz – redzedi