@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 — что спрашивают на самом деле
В этом посте были ссылки, но мы их удалили по правилам Сетки