как передать несколько параметров в запросе получения - PullRequest
1 голос
/ 05 мая 2020

Я пытаюсь проверить, работает ли мой метод через API

   @GetMapping(value = "/ads/in/rubrics/{ids}")
        public List<Ad> findAllAdInRubricByIds(@PathVariable("ids") List<Integer> ids) {
            return adService.findAllAdInRubricByIds(ids);
        }

как я могу установить некоторые параметры в запросе на получение? вот как я пробовал

http://localhost:9999/mvc/ad/ads/in/rubrics/ids&ids=1&ids=2
http://localhost:9999/mvc/ad/ads/in/rubrics/ids&ids1=1&ids2=2

всегда получаю ошибку 400 Bad Request

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Вы путаете PathVariables с RequestParams.

PathVariable - это переменная в пути запроса. Это не обязательно должен быть последний символ.

@GetMapping("/api/{version}/foo/{idFoo}")
public Void getFooNumber(@PathVariable("version") Integer version, @PathVariable("idFoo") Integer idFoo){
    return "1";
}

Поскольку переменные пути являются частью пути, они всегда необходимы. Если вы не включите их в запрос, вы в конечном итоге вызовете другую конечную точку или получите 404, если запрос не может быть сопоставлен с какой-либо конечной точкой.

RequestParams - это параметры, полученные в конце URL запроса после "?"

@GetMapping("/api/foo")
public Void getFooNumber(@RequestParam(value="version", required=false) Integer version, @RequestParam(value="idFoo", required=true) Integer idFoo){
    return "1";
}

С помощью RequestParams вы можете определить для каждого из них, если это требуется или нет.

Вы также можете смешивать их и использовать в одном методе PathVariables и RequestParams.

В первом примере URL-адрес запроса будет « ... / api / 1 / foo / 25 », а во втором примере - « ... / api. / foo? version = 1 & idFoo = 25"

Что касается наличия массива или списка, если вы определяете параметр как список, вы можете отправить несколько параметров с тем же именем:

@GetMapping("/ads/in/rubrics")
public Void findAllAdInRubricByIds(@RequestParam(value="ids", required=true) List<Integer> ids){
    return adService.findAllAdInRubricByIds(ids);
}

В этом случае вы можете использовать " ... / ads / in / rubrics? Ids = 1 & ids = 2 & ids = 3 & ids = 4 "

0 голосов
/ 05 мая 2020
http://localhost:9999/mvc/ad/ads/in/rubrics/?ids1=1&ids2=2

Для первого параметра используйте? и после этого для каждого дополнительного параметра a &

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