Параметры запроса
Данные из URL как аргументы метода
Часть входных данных приходит не в теле запроса, а прямо в URL. Spring MVC умеет сразу передать такие значения в параметры Java-метода, поэтому контроллеру не нужно разбирать строку запроса вручную.
Query-параметры через @RequestParam
Для запроса GET /products?category=books&page=2
значения после ? удобно получить через @RequestParam.
@GetMapping("/products")
List<ProductDto> products(
@RequestParam String category,
@RequestParam(defaultValue = "0") int page) {
return productService.find(category, page);
}
Spring MVC получает строковые значения из HTTP-запроса и преобразует их в объявленные Java-типы,
если такое преобразование поддерживается. В примере page становится
int, а при отсутствии параметра используется значение 0.
Переменные пути через @PathVariable
Если значение является частью самого пути, его обозначают фигурными скобками в mapping
и получают через @PathVariable.
@GetMapping("/products/{id}")
ProductDto product(@PathVariable long id) {
return productService.find(id);
}
Запрос GET /products/42 передаст в id значение 42.
Так URL остаётся частью внешнего контракта, а внутри контроллера мы работаем уже с обычным Java-значением.