有没有更好的方法来构建一个可能不需要的多个参数的控制器?

Is there a better way to construct a controller with multiple parameters the might not be required?

我正在制作一个简单的 spring 启动应用程序,我必须获得一个对象列表,我按不需要的参数对其进行过滤。所以基本上用户可以发送参数,但不是必须的。我找到的最佳解决方案是使用 @RequestParam 注释,但它似乎不起作用。如果我同时设置两个参数,它会完美运行,但如果我只设置一个或 none,我会收到错误消息。我是否必须为每种情况重载方法,或者是否有更流畅的方法来处理这个问题(如果可能,仍然使用 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"
}

删除这一行:

 params ={"apple","orange"} 

它会起作用的。 因为不需要调用两次,所以有那些@RequestParam 注解就足够了。