Architektura oprogramowaniaJavaWeb application

Spring Boot #12 – integracja z REST API na przykładzie RestTemplate

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 http://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(
            "http://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(
            "http://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.

Cały kurs opisujący mechanikę i działanie Spring Boot od podstaw znajdziesz tutaj: Kurs Spring Boot

 

Tags:
Show Buttons
Hide Buttons