我如何区分两个端点,每个端点都有一个PathVariable?
我正在开发一个 Spring Boot 应用程序。我有以下 REST 端点:
@GetMapping(value = { "/person/{name}", "/person/{age}" })
public PersonData getPersonData(@PathVariable(required = false) String name,
@PathVariable(required = false) Integer age) {
}
可以使用名称变量或年龄变量调用此端点,但它似乎无法区分它们。如果我调用'.../person/20',它不会调用“/person/{age}”,但它总是调用“/person/{name}”。
我知道我可以做这样的事情:
@GetMapping(value = { "/person/name/{name}", "/person/age/{age}" })
但是,有没有其他方法可以在不向路径添加任何内容的情况下解决它?
回答
路径变量通常类似于主键。
喜欢:
/person/{id}
您尝试的是搜索数据,这应该使用查询参数来完成。
例子:
@GetMapping(value = { "/person/{name}", "/person/{age}" })
public PersonData getPersonData(@RequestParam String name,
@RequestParam Integer age) {
}
然后你可以调用它
/person?age=40
/person?name=Peter