Klasa RestTemplate pozwala na wymianę danych z REST API.
W zależności od metody HTTP z którą zajdzie komunikacja można odpowiednio sparametryzować metodę exchange – domyślnie służącą do wymiany danych tak, aby odpytywała o metody webowe:
- GET,
- HEAD,
- POST,
- PUT,
- PATCH,
- DELETE,
- OPTIONS,
- TRACE;
Oprócz tego metoda jest wstanie przekazywać dane do metody webowej poprzez (Parametryzacja metod REST):
- Nagłówek
- Parametr
- Ścieżkę (adres)
- Ciało
Przykłady
Get z parametrem
Przykład pierwszy opisuje sposób łączenia się z metodą GET dostępną pod adresem https://bykowski.pl/materials/HttpExample.php. Przyjmuje ona parametr o nazwie name. Dlatego jako pierwszy argument metody exchange podawany jest adres wraz z parametrami tak jak to widać na listingu poniżej.
Kolejnym elementem jest typ odpytywanej metody – w tym przypadku GET.
Następnym argumentem jest przezywana encja. Encja może nieść ze sobą informacje na temat nagłówka czy ciała. Jednak w przypadku tego API jest to zbyteczne.
Ostatnim elementem jest tym zwracany. Ponieważ metoda zwraca odpowiedź w postaci łańcucha znaków toteż typ zwrotny zostanie ustawiony na String.class.
Metoda zwraca ResponseEntity<T> gdzie parametr T oznacza typ zwracany. Zgodnie z deklaracją typu zwracanego jako łańcucha, to typem zwracanym będzie ResponseEntity<String>.
Aby pobrać odpowiedź zwracaną trzeba posłużyć się metodą getBody();
public String callGet() {
RestTemplate rest = new RestTemplate();
ResponseEntity<String> exchange = rest.exchange(
"https://bykowski.pl/materials/HttpExample.php?name=Przemek",
HttpMethod.GET,
HttpEntity.EMPTY,
String.class);
return exchange.getBody();
}
POST z body
Kolejna metoda przyjmuje parametry przez body. Dlatego nie można przekazać tych informacji w URL. W tym celu trzeba stworzyć encje oraz podać do niej właściwe dane. Encja przyjmuje ciało i nagłówek. Do przekazania ciała posłuży para danych klucz-wartość. Natomiast nagłówek pozostanie pusty ponieważ nie ma konieczności zawierania w nim informacji.
Na koniec należy przekazać tworzoną encje do metody, oraz ustawienie metody na POST.
public String callPost() {
RestTemplate rest = new RestTemplate();
MultiValueMap<String, String> map= new LinkedMultiValueMap<String, String>();
map.add("name", "Przemek");
HttpEntity<MultiValueMap<String, String>> httpEntity = new HttpEntity<>(map, new HttpHeaders());
ResponseEntity<String> exchange = rest.exchange(
"https://bykowski.pl/materials/HttpExample.php",
HttpMethod.POST,
httpEntity,
String.class);
return exchange.getBody();
}
Przykładowa aplikacja
Aby zobaczyć przykładowe możliwości zastosowania API wykorzystany został projekt – HTTP communicator
W kolejnym kursie zostaną opasane zasady przesyłania obiektów z wykorzystaniem RestTemplate.
Szkolenia live dla developerów • praktyczna wiedza, realne case’y, zero lania wody 

