Параметры запроса

Базовый Spring
≈ 1 мин чтения

Данные из 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-значением.

Query-параметр и переменная пути выражают разные вещи. Переменную пути обычно используют для идентификации ресурса, а query-параметры — для фильтрации, сортировки, пагинации и других дополнительных условий запроса.