RequestParam как установлено в одном параметре - PullRequest
0 голосов
/ 28 октября 2018

Я создал конечную точку с установленным параметром:

@GetMapping("/me")
public MeDto getInfo(@RequestParam("param") Set<Integer> params) {
    ...
}

Все работает нормально, но мне нужно отправлять идентификаторы отдельно, например,

/me?param=1&param=2

Есть ли способ сделать это следующим образом:

/me?param=1,2...N

Есть идеи?Благодаря.

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

вы можете сделать что-то вроде этого

@RequestMapping(method=RequestMethod.GET, value="/me")
    public ResponseEntity<?> getValues(@RequestParam String... param){
        Set<String> set= new TreeSet<String>(Arrays.asList(param));
        return new ResponseEntity<Set>(set, HttpStatus.OK);
    }

Так что, если вы нажмете -> localhost: 8786 / me? Param = hello, foo, bar, animals, вы получите ниже ответ

["животные", "бар", "фу", "привет"]

0 голосов
/ 28 октября 2018

Хорошо, я протестировал его в новой "Spring Environment", созданной на start.spring.io

. Он работает "из коробки", как уже было сказано в комментариях, но только с массивом целых чисел (Не с набором).Если вы собираетесь использовать один из перечисленных вариантов, вы можете удалить дубликаты чисел (я думаю, это было ваше намерение с помощью набора), просто набрав Set<Integer> ints = Arrays.stream(params).collect(Collectors.toSet())

Когда определенно не будет «пустого» числа:

@GetMapping("/intarray")
    public Object someGetMapping(int[] params){
        return params;
    }

http://localhost:8080/api/intarray?params=1,2,3,4,5,3

Вывод (как и ожидалось, массив целых чисел):

[
1,
2,
3,
4,
5,
3

]

И если в нем, вероятно, есть пустое число, я бы предложил использовать Integer в качестве массива.

@GetMapping("/intset")
public Object someOtherGetMapping(Integer[] params){
    return params;
}

http://localhost:8080/api/intset?params=1,2,3,4,5,,,5

Вывод (со значениями NULL, поскольку в запросе есть пустые поля):

[
1,
2,
3,
4,
5,
null,
null,
5

]

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