Sytuacja kobiet w IT w 2024 roku
27.07.20204 min
Javin Paul

Javin PaulSoftware Architect / BloggerInfotech

7 powodów, dla których warto użyć Spring do pracy z REST API w Javie

Sprawdź, dlaczego Spring jest odpowiednim frameworkiem, jeśli chcesz pracować przy developmencie REST API w Javie.

7 powodów, dla których warto użyć Spring do pracy z REST API w Javie

REST stał się standardowym sposobem tworzenia usług webowych, a jeśli chodzi o Javę, dostępnych jest wiele frameworków i bibliotek, takich jak JAX-RS, Restlet, Jersey, RESTEasy, Apache CFX itp. Mimo to, przy tworzeniu usług webowych RESTful, zachęcam programistów Javy do używania Spring MVC. Ale po co w ogóle używać Spring MVC Framework do tworzenia usług webowych RESTful w Javie? Jakie są jego zalety i dlaczego jest on lepszy niż inne dostępne frameworki i biblioteki?

Myślę, że najważniejszym powodem jest to, że możesz tutaj wykorzystać swoje doświadczenie w Spring MVC (w którym zapewne jakieś masz, jeżeli pracujesz na backendzie). Nie musisz się wtedy uczyć nowego frameworka lub biblioteki, co oznacza, że szybciej wdrożysz swoje REST API. Wykorzystanie swojego wieloletniego doświadczenia w Spring MVC to moim zdaniem jedna z największych zalet, przemawiających za używaniem go w takich projektach.

Innym powodem jest to, że Spring doskonale obsługuje tworzenie usług webowych RESTful. W ostatnich kilku wersjach (począwszy od Spring 3.0) wprowadzono wiele ulepszeń do Spring MVC, aby zapewnić możliwie najlepszą obsługę REST. Spring (od wersji 4.0) ma dedykowane adnotacje, takie jak @RestController i @ResponseStatus, aby było jak najłatwiej tworzyć zasoby REST. Zapewnia on też klasy do konsumowania zasobów REST tak jak w przypadku klasy RestTemplate.

Istnieje również wiele innych klas pomocniczych oraz adnotacji, które ułatwiają development usług webowych RESTful w Spring. W tym artykule pokażę kilka z nich, aby udowodnić, że użycie Spring do tworzenia usług webowych RESTful to właściwie podjęta decyzja.

7 powodów, dla których warto używać Spring podczas developmentu usług webowych RESTful w Javie

Jak już mówiłem, możemy użyć Spring MVC do tworzenia i korzystania z usług webowych RESTful. Przyjrzyjmy się teraz temu wsparciu nieco dokładniej.


1. Obsługa HTTP

W Spring MVC kontroler może obsługiwać żądania wszystkich metod HTTP, co jest podstawą usług webowych RESTful. Można, na przykład, wykorzystać metodę GET do wykonywania operacji odczytu, metody POST do tworzenia zasobów, metody PUT do aktualizacji zasobów oraz metody DELETE do usuwania zasobów z serwera.

Począwszy od wersji Spring 3.2, można również obsługiwać żądania PATCH. 


2. Pomijanie renderowania opartego na widoku

Reprezentacja danych jest bardzo ważna przy REST. To dlatego Spring MVC umożliwia całkowite pominięcie renderowania opartego na widoku za pomocą adnotacji i różnych implementacji. Możesz dzięki temu bezpośrednio wysłać odpowiedź do klienta, tak jak sobie klient zasobów życzy, a także w pożądanym formacie. 


3. Adnotacje REST

W wersji Spring 4.0 dodano dedykowaną adnotację @RestController, aby ułatwić obsługę REST. Jeśli dodasz adnotację do klasy kontrolera za pomocą @RestController, to zamiast @Controller Spring zastosuje konwersję komunikatów do wszystkich metod obsługujących żądania w kontrolerze.

Oznacza to, że nie musisz dodawać osobnych adnotacji do każdej metody. Dzięki temu Twój kod jest znacznie bardziej czytelny.


4. Wyciąganie danych z URL

Jedną z głównych różnic między usługą webową REST a zwykłą aplikacją webową jest to, że REST przekazuje identyfikatory danych w samym URL (na przykład /messages/101), podczas gdy aplikacje webowe zwykle używają parametru zapytania, takiego jak /messages?Id=101.

Jeśli pamiętasz, używamy @RequestParam, aby uzyskać wartość tych parametrów zapytania. Spring MVC zapewnia jednak również adnotację @PathVariable, która może wyodrębnić dane z adresu URL. Umożliwia ona kontrolerowi obsługę żądań sparametryzowanych adresów URL.


5. JSON, XML oraz obsługa formatowania HTML

Innym kluczowym aspektem usług webowych RESTful jest Reprezentacja. Oznacza to, że ten sam zasób może być reprezentowany w różnych formatach, takich jak JSON, XML, HTML itp. Na szczęście Spring udostępnia kilka implementacji widoków i narzędzi do ich rozpoznawania, które renderują dane jako JSON, XML i HTML.

Na przykład, ContentNegotiatingViewResolver może sprawdzić rozszerzenie podane w ścieżce żądania lub nagłówek Accept, aby znaleźć poprawną reprezentację zasobu dla klienta.


6. Adnotacje RequestBody oraz ResponseBody

Podobnie do adnotacji @ResponseBody, która służy do konwersji odpowiedzi na żądany przez klienta format (przy użyciu HttpMessageConverts), Spring MVC zapewnia również adnotację @RequestBody, która używa implementacji HttpMethodConverter do konwersji przychodzących danych HTTP na obiekty Java przekazane do metody kontrolera. 

Jeśli z metodami obsługującymi żądania jesteś na bakier, to kliknij tutaj.


7. RestTemplate do konsumpcji REST API

Spring zapewnia również klasę szablonu RestTemplate, która jest podobna do JdbcTemplate, która może z kolei konsumować zasoby REST. Użyj tej klasy do testowania usługi webowej RESTful lub tworzenia klientów REST.

Podsumowanie

To tylko niektóre z ważnych funkcji frameworka Spring MVC, które pomagają w tworzeniu usług webowych RESTful. Jak powiedziałem wcześniej, najważniejszym powodem, dla którego wybrałem Spring do tworzenia zasobów RESTful, jest to, że mogę wykorzystać moją istniejącą wiedzę o frameworku, co oznacza niski próg wejścia.

Jeśli spojrzysz na to wysokopoziomowo, to tworzenie usług RESTful nie różni się zbytnio od tworzenia aplikacji webowych. Zasadnicza różnica polega jednak na tym, że w przypadku pierwszego mamy do czynienia głównie z użytkownikami ludzkimi, natomiast w przypadku REST mamy do czynienia z innymi użytkownikami (głównie klientami JavaScript i aplikacjami mobilnymi).

Ta kluczowa różnica przyczynia się do powstawania innych, takich jak reprezentowanie danych w formacie JSON lub XML zamiast HTML, który wygląda ok w przeglądarce, ale nie jest zbyt dobry do konsumpcji przez systemy. 

I na koniec: jeśli chcecie dowiedzieć się więcej na temat Spring i nie tylko, to polecę tutaj kilka kursów:

  • Spring Framework 5: Beginner to Guru
  • Rest with Spring
  • Master Java Web Services and RESTful API with Spring Boot
  • Spring MVC For Beginners - Build Java Web App in 25 Steps


Oryginał tekstu w języku angielskim możesz przeczytać tutaj.

<p>Loading...</p>