Jestem stosunkowo nowy, jeśli chodzi o umiejętności programowania stron internetowych w Javie. Mam projekt, który moim zdaniem byłby dobrym kandydatem do usługi RESTful z tego, co niewiele rozumiem na temat interfejsów API. Próbuję zagłębić się w szczegóły tego, jak to powinno być zorganizowane, ale tak naprawdę nie docieram nigdzie pod względem wyszukiwań w Google i czytania materiałów, które już mam. Mam nadzieję, że ten post przyniesie pewne potwierdzenie i / lub przekierowanie pod względem mojej wiedzy i założeń na ten temat.
Moje obecne założenie jest takie, że moja usługa RESTful będzie miała następującą strukturę:
- Dane bazy danych (SQL).
- ORM (używam stosunkowo niepopularnego ORM o nazwie CPO, ale w przypadku większości ludzi to po prostu zastąpiłoby Hibernacja).
- Klasa menedżera Java z metodami komunikującymi się z ORM w celu uzyskania danych
- Klasa / klasy kontrolera Java, które obsługują mapowanie żądań i używają
@ResponseBody
do kierowania / obsługi adresu URL i działań związanych z przetwarzaniem danych za pomocą czasowników HTTP ( http://mysite.com/computers/dell może byćGET
żądane ze słowem „dell” w adresie URL będącym parametrem, który zwróci tablicę JSON informacji o komputerach Dell). - Ta usługa powinna być wykonywana za pomocą Spring Boot lub w jakiś sposób być w stanie działać samodzielnie i być niezależna od jakiejkolwiek innej aplikacji.
Teraz, zakładając, że powyższe jest poprawne, miałbym (na bardzo podstawowym poziomie) usługę RESTful, której każda aplikacja może użyć do konsumpcji i wykorzystania danych.
Powiedzmy, że mam swoją aplikację internetową. Załóżmy, że tworzę aplikację internetową na temat informacji o sprzęcie komputerowym i używam Springa do jej zbudowania. Oto moje założenia:
- Miałem wiele widoków jako strony JSP, przy czym strony JSP zawierały HTML, CSS i JavaScript. JavaScript obsłuży wywołania AJAX do kontrolera tej aplikacji w razie potrzeby (poniżej).
- Ta aplikacja internetowa miałaby również własny kontroler do obsługi żądań i routingu adresów URL aplikacji, a następnie kontroler użyłby, powiedzmy,
ModelAndView
obiektu lub czegoś w tym stylu do „rozmowy” z kontrolerem usługi RESTful, uzyskując wszelkie przekazywane dane , przekaż te dane z powrotem do widoku (JavaScript, JSP itp.) w celu wyświetlenia.
Czy jestem na dobrej drodze, tutaj? Rozumiem, że istnieje również aspekt uwierzytelniania usług RESTful, ale nie jestem jeszcze tam koncepcyjnie (i mój projekt będzie wykorzystywany w sieci prywatnej, więc bezpieczeństwo nie jest w tym momencie priorytetem).
Każdy wgląd, krytyka, wiedza, opinie lub wyjaśnienia są bardzo mile widziane.
@Autowire
rezultacie zadziała.Zgadzając się z większością odpowiedzi z @ Minjun.Y, myślę, że wybrałbym nieco inne podejście do REST i warstwy strony internetowej. Po przeczytaniu twojego pytania, myślę, że chcesz odsłonić zarówno interfejs WWW, jak i interfejs REST na zewnątrz. Niewiele można zyskać czytając POJO z bazy danych, przekształcając dane w JSON, a następnie z powrotem w POJO do wykorzystania przez JSP.
Wolałbym, aby warstwa usługi wykonała całą prawdziwą pracę i dodała osobne warstwy „prezentacji” dla aplikacji sieci Web (JSP) i kontrolera REST. Byłyby to osobne kontrolery, do których wprowadzana byłaby usługa. Możesz też skorzystać z usługi REST i zbudować całą logikę prezentacji po stronie klienta, zgodnie z poprzednią odpowiedzią.
Nie jestem też wielkim fanem modułów Maven. Sposób, w jaki nasz sklep Java wdrożyłby twój projekt, polegałby na regularnych wydaniach warstwy usługowej, a następnie uzależnieniu warstw prezentacji od najnowszej wersji. Jest tu miejsce na dyskusję na ten temat, ale z pewnością działa dla nas. Interfejs internetowy i interfejsy REST mielibyśmy jako osobne projekty Maven, ponieważ zwykle znajdują się one w różnych plikach .war i dlatego wymagają osobnego wdrożenia.
BTW, wzmocnię potrzebę przyspieszenia dzięki narzędziom do kompilacji i zarządzania zależnościami. Gdy Twój projekt osiągnie odpowiedni rozmiar, potrzebujesz go. Bezpłatne narzędzia, takie jak Maven, Jenkins i Nexus, sprawiają, że zarządzanie wydaniami nie stanowi większego problemu.
źródło