java - 我如何区分两个端点,每个端点都有一个 PathVariable?

标签 java spring spring-boot rest endpoint

我正在开发一个 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

关于java - 我如何区分两个端点,每个端点都有一个 PathVariable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68175656/

相关文章:

java - 通过 Maven 集成测试 Flex/Java Web 应用程序的最佳方法?

java - 我可以将 hprof/jmap 转储与 VisualVM 进行比较吗?

java - 升级到 springboot 2.4.13 后 RequestMappingInfo.getMatchingCondition 抛出 IllegalArgumentException

spring-boot - 无法配置数据源:未指定 'url'属性,并且无法配置任何嵌入式数据源。Gradle项目中的错误

java - 为什么这段代码的输出是这样的?

java - JBoss 启用多对一审计

java - 如何在 IntelliJ 中正确创建简单的命令行 Spring 应用程序?

java - Spring架构问题: is Service needed?

java - Spring Boot 下 Undertow/Wildfly 上的文件上传和可接受的错误处理

JavaMelody 与 Spring Boot 和 Hikari 数据源