Pobieranie pojedynczego zasobu.
Najpierw przedstawię kod wstawiony w klasie biznesowej.
Będzie to metoda pobierająca pojedynczy obiekt klasy”Topic” z listy “topics” po wskazanym “id”. Korzystamy z dostępnych już od wersji Javy 8 wyrażeń Lambda.
public Topic getTopic(String id) { return topics.stream().filter(t -> t.getId().equals(id)).findFirst().get(); // powyżej wyrażenie lambda, wprowadzone w Javie 8 }
Następnie przechodzimy do kontrolera:
@RequestMapping("/topics/{id}") public Topic getTopic(@PathVariable String id) { return topicService.getTopic(id); }
Na końcu ścieżki podajemy w “{ }” nazwę zmiennej. W tym przypadku jest taka sama jak parametr w metodzie do której odwołuje się adnotacja. Gdyby było to co innego, wtedy trzeba byłoby dokonać małej zmiany:
@RequestMapping("/topics/{foo}") public Topic getTopic(@PathVariable("foo") String id) { return topicService.getTopic(id); }
Stosujemy tu też nową adnotację “@PathVariable” dostarczającą dla Springa informacji o zmiennej ze ścieżki adresu.