Zaraz stworzę kilka aplikacji internetowych od zera. (Zobacz http://50pop.com/code w celu omówienia.) Chciałbym, aby można było uzyskać do nich dostęp z wielu różnych klientów: witryn front-end, aplikacji na smartfony, usług web backend itp. Więc naprawdę chcę JSON REST API dla każdego z nich.
Wolę też pracować nad back-endem, więc marzę o tym, aby skupić się wyłącznie na interfejsie API i zatrudnić kogoś innego do stworzenia interfejsu użytkownika, czy to strony internetowej, iPhone'a, Androida czy innej aplikacji.
Pomóż mi zdecydować, które podejście powinienem zastosować:
RAZEM W SZYNACH
Stwórz bardzo standardową aplikację internetową Rails. W kontrolerze wykonaj przełącznik respond_with, aby obsługiwać JSON lub HTML. Odpowiedź JSON jest wtedy moim API.
Pro: Wiele precedensów. Świetne standardy i wiele przykładów robienia rzeczy w ten sposób.
Przeciw: niekoniecznie chcę, aby interfejs API był taki sam jak aplikacja internetowa. Nie podoba mi się, jeśli / następnie odpowiedz z przełączaniem. Mieszanie dwóch bardzo różnych rzeczy (interfejs użytkownika + interfejs API).
SERWER REST + JAVASCRIPT-CIĘŻKI KLIENT
Utwórz serwer API REST tylko do JSON. Użyj Backbone lub Ember.js dla JavaScript po stronie klienta, aby uzyskać bezpośredni dostęp do API, wyświetlając szablony w przeglądarce.
Pro: Uwielbiam oddzielanie API i klienta. Sprytni ludzie twierdzą, że jest to dobra droga. Świetny w teorii. Wydaje się najnowocześniejszy i ekscytujący.
Con: Nie ma precedensu. Niewiele przykładów tego zostało zrobionych dobrze. Przykłady publiczne (twitter.com) są powolne i nawet odchodzą od tego podejścia.
SERWER REST + KLIENT HTML SERWERA
Utwórz serwer API REST tylko do JSON. Stwórz podstawowego klienta strony HTML, który uzyskuje dostęp tylko do interfejsu API REST. Mniej JavaScript po stronie klienta.
Pro: Uwielbiam oddzielanie API i klienta. Ale obsługa zwykłego HTML5 jest dość niezawodna i nie wymaga dużego klienta.
Con: Nie ma precedensu. Niewiele przykładów tego zostało zrobionych dobrze. Ramy również tego nie obsługują. Nie jestem pewien, jak do tego podejść.
Szczególnie szukam porady z doświadczenia, nie tylko w teorii.