@RequestParam без required=false — рабочий код до отсутствующего параметра

По умолчанию @RequestParam считает параметр обязательным — required=true, даже если это не написано явно. Пока клиент всегда передаёт параметр, тесты и ручные проверки проходят без единой ошибки.

Проблема всплывает, когда появляется клиент, который параметр не передаёт — старая версия мобильного приложения или новый сценарий фильтрации без него. Spring бросает MissingServletRequestParameterException, и это долетает как 400 без объяснения, что случилось, если не настроен свой обработчик.

@GetMapping("/orders") public List getOrders( @RequestParam String status) { return service.findByStatus(status); }

Ловушка на собеседовании — спросят не про required, а про то, что вернёт клиент при отсутствии параметра, и ждут конкретно 400 с именем параметра в сообщении, а не общий 500. Второй вопрос — как отличить «параметр опционален» от «параметр обязателен, но с дефолтом» через defaultValue.

Финал: required=false без defaultValue — это null или Optional, а не пустая строка, дальше по коду это разные ветки обработки.

Тренажёр: 600 вопросов, мок с таймером, план повторов

senior·base — что спрашивают на самом деле


В этом посте были ссылки, но мы их удалили по правилам Сетки