@n199a
Java

Как проверить имя параметра GET запроса в Sping?

Для маппинга GET запроса использую аннотацию @GetMapping:

@GetMapping(params = {ParameterName.SORT_BY})
    public List<GiftCertificate> findAllSorted(@RequestParam(value = ParameterName.SORT_BY) Set<ColumnName> columnNames) {

return service.findAllSorted(columnNames);
    }


ParameterName.SORT_BY - это обычный enum.

По запросу:

http://localhost:8080/gift-certificates?sort_by=name


я попадаю в данный метод, всё нормально. Но почему и по запросу, в котором имеется параметр, которого нету в маппинге:

http://localhost:8080/gift-certificates?sort_ABRAKADABRA_by=name


попадает запрос в этот метод:
@GetMapping
    public List<GiftCertificate> findAll() {
        return service.findAll();
    }

Почему и как сделать проверку параметров GET запроса?
  • Вопрос задан
  • 84 просмотра
Пригласить эксперта
Ответы на вопрос 1
BorLaze
@BorLaze
Java developer
Вот ешкин кот, я же тебе в предыдущем вопросе дал направление на почитать!

Еще раз - что делают декларации в твоем коде:
gift-certificates, я так понимаю, это глобальный префикс для контроллера

@GetMapping(params = {ParameterName.SORT_BY}) означает: вызови этот метод, когда урл выглядит как gift-certificates?sort_by

Когда урл не подходит, берется общий - @GetMapping - который отвечает за gift-certificates, поскольку все параметры после знака вопроса опциональны.

Если же тебе надо как-то отловить параметры с произвольными именами - тогда проштудируй вот эту статью - там как раз разобраны типичные случаи (в частности, пункт 6).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы