2012-09-27 19 views
8

Obecnie tworzę aplikację internetową, która w dużym stopniu opiera się na klientach mobilnych i stacjonarnych, którzy konsultują się z serwerem sieci Web w celu uzyskania informacji. Można to osiągnąć ładnie, udostępniając RESTful API do obsługi tego. Moim pomysłem jest więc, aby aplikacja działała jak "platforma", która obsługuje wszystkie rzeczywiste logiki biznesowe i bazy danych za zasłonami.Witryna Symfony2 i interfejs API RESTful

Moim planem jest stworzenie platformy przy użyciu mechanizmów uwierzytelniania symfony2 i OAuth 2.0, w połączeniu z usługami sieciowymi RESTful.

Teraz moja prawdziwa dylemat pojawia się na stronie internetowej. Idealnie chciałbym myśleć o stronie jako jeszcze jeden klient, który prosi tę platformę REST o informacje i całkowicie oddziela ją od samej platformy.

Aby było to trochę bardziej zrozumiałe, załóżmy, że tworzymy bloga z tą architekturą, więc będziemy mieć "platformę/zaplecze", które zapewnia usługę wypisywania artykułów, na przykład:/articles/5 . To na zapleczu, a wraz z symfony2/doktryną oznacza, że ​​aplikacja ma klasę modelu artykułu, a te można uzyskać z DB. Prosty kontroler pyta o numer artykułu 5 i zwraca wszystkie informacje w formacie JSON.

Teraz strona internetowa na tym przykładzie mogłaby po prostu zrobić to, co proste, a także posiadać encję Artykuł i bezpośrednio zapytać bazę danych bezpośrednio, ale myślę, że byłoby czystsze, gdyby mogła po prostu rozmawiać z platformą za pośrednictwem interfejsu REST api i używaj tych informacji jako "zaplecza" dla podmiotów.

Tak więc prawdziwe pytanie brzmiałoby, czy jest tak, aby wspierać ten rodzaj projektowania za pomocą symfony2? Czy podmioty polegają na interfejsie API REST dla operacji CRUD? Czy po prostu lepiej jest zrobić platformę/stronę internetową i udostępnić "CoreBundle" wszystkim ogólnym?

+0

Czy znaleźli rozwiązanie tego problemu? Byłbym zainteresowany. – sprain

+0

Właściwie to zrobiłem. Zakończyłem pracę z tym, że strona internetowa była innym klientem i żądałem danych z platformy za pośrednictwem żądań http. Używam guzzle (z moim własnym GuzzleBundle dla symfony2), aby wysyłać żądania i automatycznie deserializować odpowiedzi JSON na byty. Po stronie internetowej mam faktycznie zduplikowane jednostki, ale bez mapowania doktryn, aw niektórych przypadkach faktyczne dane zakończyły się różniąc pomiędzy rzeczywistą jednostką biznesową w backendie, niż dane potrzebne dla interfejsu. Jeśli to ci się przydaje, mój pakiet żłopaczy jest na https://github.com/xamado/guzzle-bundle – Xavier

+0

Dzięki! Więc masz dwie prośby o każde żądanie w swojej witrynie? To jest coś, czego chciałbym uniknąć ... – sprain

Odpowiedz

1

W Symfony nie ma nic, co uniemożliwiłoby ci robienie tego, co chcesz.

Po stronie klienta można użyć Backbone.js lub Spine.js.

+0

Zgadnij, że zapomniałem wspomnieć, że zamierzałem, aby strona była projektem symfony2, to jest moje pytanie dotyczące obsługi strony internetowej symfony2, z której pochodzą podmioty apel REST i nie, powiedzmy, doktryna. – Xavier

Powiązane problemy