MVC jest dość proste. Istnieje model, kontroler i widok. Kiedy tworzymy stronę internetową, wszystko się łączy, gdy „ klient wysyła żądanie słowa kluczowego REST do serwera -> serwer dopasowuje żądany adres URL do działania kontrolera -> który następnie wywołuje model (y) do gromadzenia / przetwarzania danych, uzyskuje wynik -> i zwraca wynik z powrotem do klienta jako stronę HTML (widok) ”.
Co jeśli mówimy o czystej usłudze sieciowej RESTful API? Następnie przepływ z czymś w rodzaju „ klient wysyła żądanie słowa kluczowego REST do serwera -> serwer dopasowuje żądany adres URL do działania kontrolera -> który następnie wywołuje model (y) do gromadzenia / przetwarzania danych, uzyskuje wynik -> i zwraca wynik z powrotem do klienta w JSON '. Tak jak poprzednio, ale nie ma „widoku” ... a raczej wygenerowany JSON można traktować jako „widok”. W pewnym sensie korzystamy tylko z części MC MVC. Czy tak należy to zrobić? A może istnieją inne, lepiej dopasowane wzorce dla usługi tylko API zamiast MVC?
źródło
Widok to warstwa odpowiedzialna za wyświetlanie informacji, które mogą być interpretowane przez użytkownika / klienta twojej aplikacji (nie oznacza to, że użytkownik musi być faktyczną osobą). JSON jest całkowicie poprawnym formatem warstwy widoku, komputery to rozumieją.
Tak długo, jak warstwa widoku publikuje informacje, które mogą być wykorzystane przez użytkownika do wpływania na modele w aplikacji, nie ma znaczenia, jak wygląda widok, nadal jest widokiem, warstwą działającą jako oprogramowanie pośrednie między użytkownikiem a systemem .
źródło
Być może Martin Fowler nie zgodziłby się z tym :
Iść dalej...
OK, to trochę plątanina
MVC, cokolwiek to jest, to zbiór pomysłów na implementację interfejsów użytkownika.
REST to zbiór ograniczeń architektonicznych do tworzenia aplikacji na dużą skalę.
Internet, o którym tu mówisz, to gigantyczna aplikacja do zarządzania dokumentami zbudowana przy użyciu większości tych samych ograniczeń.
Podobieństwa, które widzisz między nimi, są (wybierz) niepoprawnie przypisane lub powierzchowne.
RESTafarianie mają wspólne rozumienie HATEOAS , „hipertekstu jako silnika stanu aplikacji”, i to powinno wysyłać alarmy dzwoniące przez twoją głowę - dlaczego widok miałby być silnikiem stanu ? Jeśli kwestionujemy tę przesłankę i szukamy dodatkowych dowodów, możemy również zauważyć dwie dziwne rzeczy.
Po pierwsze, że możemy całkowicie usunąć serwer HTTP z równania, ładując HTML z dysku. Przeglądarka jest z tego całkowicie zadowolona, usprawiedliwiając niewielkie zmiany w zachowaniu, które mogą wynikać ze zmiany podstawowego adresu URL. Widoki zwykle nie działają, gdy zostały całkowicie odłączone od modelu i kontrolera w ten sposób.
Po drugie, jeśli uważnie obserwujemy nowoczesną przeglądarkę, zauważymy, że istnieje wiele widoków HTML. Wiele widoków widoku wydaje się naprawdę dziwnym pomysłem, ale na pewno jest główna prezentacja z dużą ilością znaczników tekstowych, które reagują na gesty użytkownika, a następnie jest to „Widok źródłowy”, który pokazuje surowy HTML, a także reaguje na gesty użytkownika. Żółwie do samego końca!
Odpowiedzią na zagadkę jest oczywiście to, że HTML nie jest widokiem. Zbiór widżetów w przeglądarce to widok, który komunikuje się z Document Object Model , który został zainicjowany przez odczyt HTML.
Innymi słowy, HTML jest reprezentacją stanu, tak jak obiecał Roy T. Fielding .
Bardziej poprawnie, tak jak poprzednio: nie ma widoku. JSON, podobnie jak HTML, jest reprezentacją stanu, odpowiednią do przekraczania granic procesu.
Pomyśl „DTO” lub „Wiadomość”, a twoje wnioski będą o wiele mniej prawdopodobne, by cię sprowadzić na manowce.
źródło
Przekazywanie JSON jako widoku lub używanie go jako modelu widoku do konstruowania widoku nie narusza wzorca.
Korzystam z tej samej architektury w bieżącej aplikacji, nad którą pracuję i działa bardzo dobrze. Razem z ładnym frameworkiem JS możesz tworzyć naprawdę responsywne projekty.
Szczerze mówiąc, nie mam pojęcia. Ale myślę, że to, czy używasz MVC, czy nie w API, nie jest tak ważne. Używaj wszystkiego, co uznasz za wygodne. Mówiąc o usługach internetowych, należy wziąć pod uwagę o wiele ważniejsze aspekty (niezwiązane bezpośrednio z MVC), np. Bezpieczeństwo, spójność, dostępność itp.
źródło