有没有更好的方法来构建一个可能不需要的多个参数的控制器?
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 注解就足够了。
我正在制作一个简单的 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 注解就足够了。