@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 запроса?
  • Вопрос задан
  • 338 просмотров
Пригласить эксперта
Ответы на вопрос 1
BorLaze
@BorLaze
Java developer
Вот ешкин кот, я же тебе в предыдущем вопросе дал направление на почитать!

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽