【发布时间】:2022-09-23 02:30:34
【问题描述】:
Spring/SpringBoot 的新手,我有两种方法,如下所示 -
1.
@GetMapping(\"/score\")
public UserScoreRes getUserScore(@RequestHeader(\"api-key\") String apiKey,
@RequestHeader(\"jwt\") String jwt,
@RequestParam(name = \"date\", defaultValue = \"2022-07-15\") String dateStr) {
.....
}
@GetMapping(value = \"/score\", params =\"behaviour-version=2\")
public UserScoreResV2 getUserScoreV2(@RequestHeader(\"api-key\") String apiKey,
@RequestHeader(\"jwt\") String jwt,
@RequestParam(name = \"date\", defaultValue = \"2022-07-15\") String dateStr) {
....
}
在方法 2 (getUserScoreV2) 中,我怎样才能得到behaviour-version方法里面?
试过 -
@GetMapping(value = \"/score\", params =\"behaviour-version=2\")
public UserScoreResV2 getUserScoreV2(@RequestHeader(\"api-key\") String apiKey,
@RequestHeader(\"jwt\") String jwt,
@RequestParam(name = \"behaviour-version\", required = false) String behaviourVersion,
@RequestParam(name = \"date\", defaultValue = \"2022-07-15\") String dateStr) {
....
}
但它是不是在职的。
无法修改方法 1 (getUserScore),因为在生产中发布了一个版本。
-
你想要相同的端点但不同的实现,对吗?
-
你想在控制器级别处理这个吗?
-
你为什么需要它?该值始终为 2...
@GetMapping(或@RequestMapping)中的参数,顾名思义,用于映射.因此,如果您有一个带有参数behaviour-version=3的请求,它将不会匹配并且不会调用此方法。因此,将该参数作为参数并不会增加太多,因为在这种情况下它将始终为 2。 -
@YJR - 你是对的,我想要“相同的端点但不同的实现”。怎么做?可以请提及不同的方法吗?
-
@M。 Deinum - 你是对的,如果我希望这个值“行为版本”是动态的,作为用户的输入,那么该怎么做呢?
标签: spring spring-boot spring-mvc spring-rest