18. Getting a single resource


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.