w ,

FajneFajne Dobre!Dobre! ŚwietnieŚwietnie SmuteczekSmuteczek

HTTP Client w Java! Gson, OkHttp, REST Assured, Retrofit – Co wybrać?

REST client pozwala na skomunikowanie się z API oraz pobranie z niego danych. W zależności od implementacji klient może pobierać dane w postaci surowej (najczęściej JSON lub XML), lub też dokonywać automatycznego mapowania odpowiedzi na obiekty.

Zbiór otwartych API

Przed przystąpieniem tworzenia klienta, musimy wybrać API z którym się połączymy. Jeśli nie masz sprecyzowanego API, a chcesz od razu przećwiczyć tworzenie klienta to rekomenduję Ci:
https://github.com/public-apis/public-apis
Jest to otwarta lista usług, które możesz też wykorzystać do budowy swoich projektów.

Rest Client w Java

W klasycznej aplikacji Java sami dobieramy bibliotekę, która będzie nam umożliwiała komunikacje z usługą REST.

Gson

Chociaż Gson jest biblioteką służącą do mapowania JSON -> POJO, to w połączeniu ze standardowym API Java I/O możemy utworzyć bardzo funkcjonalnego klienta HTTP.

Instrukcje jak wykorzystać możliwości dostarczane przez Gson przedstawiam w materiale wideo, który od podstaw prezentuje jak połączyć się z API Google Maps oraz pobrać z niego interesujące obiekty, które finalnie zostaną wyświetlone.

Jako alternatywę zaprezentowałem również JsonObject, który zwalnia nas z konieczności tworzenia modelu danych i pozwala na wyciąganie danych prosto z obiektu.

OkHttp i Unirest

OkHttp to jedna z najbardziej podstawowych bibliotek do tworzenia klientów HTTP. Zgodna z protokołami SPDY i HTTP/3. Jest również bardzo często wykorzystywana w aplikacjach mobilnych – dostarcza wsparcie dla Java i Kotlin.

Unirest z kolei stanowi bardzo lekką i łatwą alternatywę dla OkHttp.

Oba te rozwiązania jest bardzo łatwo zaimplementować dzięki wbudowanemu w Postman’a generatora kodu źródłowego.

Dla przykładu wykorzystajmy następujące API:
https://cat-fact.herokuapp.com/facts/random

Po wykonaniu żądania możemy zobaczyć w Postman’nie zakładkę Code

Przykład wykonania żądania z wykorzystaniem narzędzia Postman REST client
Przykład wykonania żądania w Postman – zwróć uwagę, na zaznaczoną sekcje Code

Generator kodu pozwala na dostarczenie implementacji dla wielu języków, oraz rozmaitych bibliotek:

Generowanie kodu przez narzędzie Postman w celu zbudowania własnego REST clienta
Generator kodu źródłowego w Postman

Pozostałe popularne biblioteki

  • Apache HTTP Components – biblioteka, która jest na ten moment dominującym rozwiązaniem i najczęściej wykorzystywanym według danych Maven Repository. Łatwy w użyciu, pozwala również na komunikację asynchroniczną.
  • Ning Async-http-client – zapewnia obsługę NIO. Wcześniej znany jako Async-http-client wspierany przez Sonatype.
  • Retrofit – zmienia interfejs API HTTP w interfejs Java. Wewnątrz kodu odwołujemy się do API tak samo jakbyśmy wywoływali metody klasy z narzuconym interfejsem. Samo odczytywanie, dodawanie i pozostałe operacje dostępne przez API nie różnią się zbytnio od operacji na klasach w obrębie jeden aplikacji.
  • Feign – rozwiązanie bazujące na Retrofit, bardzo dobrze integruje się ze Spring.
  • Volley – biblioteka rozwijana przez Google, głównie na potrzeby Android’a.
  • Google HTTP Client Library For Java – jak nazwa wskazuje 🙂 Rozwiązanie dla wymagających.
  • Resteasy – wrapper przeznaczony na JakartaEE, rozwiązanie utrzymywane przez JBoss.
  • REST Assured – bardzo popularne rozwiązanie, które wykorzystywane jest na potrzeby realizacji testów.

Rest Client w Spring

Spring oferuje rozwiązania, które są wrapperami do istniejących bibliotek, co sprawia, że wykorzystanie ich w ramach tego framewroka jest dużo łatwiejsze. W zależności od wersji i potrzeb możemy wykorzystać:

Napisane przez Przemysław Bykowski

Aktywny programista i energiczny trener. Specjalizuje się w Spring Boot i uczę go w ramach AkademiaSpring.pl. Po godzinach udzielam się na YouTubach. Więcej o mnie.

Dodaj komentarz

git i github

Git i GitHub dla programistów Java – wprowadzenie

kotlin

Kotlin dla początkujących – czym jest i jak zacząć?