spring-boot - 有没有更好的方法来构造一个可能不需要的具有多个参数的控制器?
问题描述
我正在制作一个简单的 Spring Boot 应用程序,我必须获取一个对象列表,我通过不需要的参数对其进行过滤。所以基本上用户可以发送参数,但不是必须的。我发现的最佳解决方案是使用 @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"
}
解决方案
删除这一行:
params ={"apple","orange"}
它会起作用。因为您不需要调用两次,所以这些 @RequestParam 注释就足够了。
推荐阅读
- javascript - 如何从对象中对数组进行排序?
- java - 使用流检查列表是否只有Java中的特定元素排列
- c - MIPS 操作存储在数据中的数组
- angular - Angular 2 - HTML & CSS to PDF(作为电子邮件附件发送)
- sql - Hive SQL 查询 json 结果并将键显示为列
- scala - 了解 scala 中 tailrec 注释递归方法的性能
- javascript - 选项更改时如何清除与选择一起使用的 v-model
- java - 获取包含数字签名的pdf页面的页面索引
- powershell - 比较 .csv 并仅添加具有更新值的行
- hibernate - 如何在 Jboss EAP 6.2 中为 infinispan 2LC 启用 JMX 统计信息