【发布时间】:2020-12-31 13:07:08
【问题描述】:
我需要获取有关名字、姓氏、手机等多个参数的所需客户信息。
我决定为此使用查询参数。
如果我将我的方法定义如下
@GetMapping("/customers")
public ResponseEntity<EntityModel<Customer>> findCustomerByFirstName(@RequestParam(required = false) String firstName) {
System.out.println();
return service.findCustomerByFirstName(firstName) //
.map(assembler::toModel) //
.map(ResponseEntity::ok) //
.orElse(ResponseEntity.notFound().build());
}
//Last-name
@GetMapping("/customers")
public ResponseEntity<EntityModel<Customer>> findCustomerByLastName(@RequestParam(required = false, name = "lastName") String lastName) {
return service.findCustomerByLastName(lastName) //
.map(assembler::toModel) //
.map(ResponseEntity::ok) //
.orElse(ResponseEntity.notFound().build());
}
春天给了我以下例外。
非常感谢任何解决此问题的建议。
【问题讨论】:
-
您有两个端点具有相同的路径和相同的 HTTP 方法,因此 Spring 无法区分它们。
-
您的两个端点都可以不带参数调用(每个参数上都有
required = "false"),因此无法从中选择。 -
是的,我的两个端点都是相同的,正在寻找一些建议以按照最佳实践完成我的工作。我可以更改端点,然后我最终会像“/customers/firstname/{firstName}”和“/customers/lastname/{lastName}”我不确定这是否符合最佳实践。在这里需要一些建议。
标签: java spring spring-boot spring-mvc query-parameters