Могу ли я объединить несколько параметров в запросе в один аргумент контроллера? - PullRequest
2 голосов
/ 09 мая 2019

Мне нужно принять запрос, который я не контролирую. Когда клиент отправляет массив ['a', 'b', 'c'] как x.

Что я на самом деле получаю: ?x.0=a&x.1=b&x.2=c

Я думаю, что правильная кодировка - ?x=a&x=b&x=c, но, как уже упоминалось, я не контролирую запрос.

Есть ли какой-то перехват, который я могу сделать, чтобы зафиксировать мой x.index запрос в ожидаемой кодировке? Я пытался написать Converter, но я мог только убедить его отобразить один параметр в другой тип.

1 Ответ

4 голосов
/ 09 мая 2019

Вы можете реализовать свой собственный HandlerMethodArgumentResolver и связать параметр x с HttpServletRequest объектом. Взгляните на: Как реализовать настраиваемое сопоставление параметров в Spring MVC .

Если это единственная конечная точка, которая обрабатывает странное соглашение о параметрах, было бы более читабельно иметь просто HttpServletRequest в качестве параметра метода и выполнять работу там до вызова службы.

Честно говоря, я бы предпочел заставить клиента изменить структуру запроса. Это не похоже на правильный синтаксис для передачи массива с GET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...