Вы путаете 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 "