Есть ли лучший способ построить контроллер с несколькими параметрами, которые могут не потребоваться? - PullRequest
0 голосов
/ 21 января 2019

Я делаю простое приложение с весенней загрузкой, и мне нужно получить список объектов, которые я фильтрую по параметрам, которые не требуются. Таким образом, в основном пользователь может отправлять параметры, но не обязан. Лучшее решение, которое я нашел, - это использование аннотации @RequestParam, но, похоже, она не работает. Если я ставлю оба параметра, он работает отлично, но если я установил только один или ни одного, я получаю ошибку. Нужно ли перегружать методы для каждого случая, или есть более плавный способ справиться с этим (если это возможно, используя запрос get)?

Мой контроллер:

@RequestMapping(
                value = "/fruits",
                params = {"apple", "orange"},
                method = GET)
public ResponseEntity<List<Fruit>> getFruits(
@RequestParam(value = "apple", required = false, defaultValue = "") 
List<Apple> apple,
@RequestParam(value ="orange", required = false, defaultValue = "") 
List<Orange> orange) {

List<Fruit> fruit = projectService.getFruits(apple, orange);
  return ResponseEntity.ok().body(fruit);
}

Ошибка:

{
"timestamp": "2019-01-20T21:26:52.287+0000",
"status": 400,
"error": "Bad Request",
"message": "Parameter conditions \"apple, orange\" not met for actual 
request parameters: ",
"path": "/api/fruits"
}

1 Ответ

0 голосов
/ 21 января 2019

Удалить эту строку:

 params ={"apple","orange"} 

и это будет работать. Поскольку вам не нужно звонить дважды, этого достаточно с этими аннотациями @RequestParam.

...