Я бы использовал @RequestMapping
Несколько путей, сопоставленных с одной и той же возможностью метода контроллера таким образом.
Я подозреваю, что даже если вы реорганизуете код для вызова одного метода, вам все равно придется реализовать некоторые логики c для разграничения двух параметров внутри метода контроллера.
Кроме того, подпись getUserById()
неоднозначна. То, что параметр id
означает id
или userId
Наличие двух отдельных методов для того, что вы хотите получить, было бы более эффективным, если бы вы обрабатывали каждый случай правильно. Внутри каждого метода контроллера вы можете использовать общий лог c для двух, если хотите.
@RequestMapping(value = "/user/{userId}", method=RequestMethod.GET)
public String getUserById(@PathVariable("userId") String userId){
// Common login
}
@RequestMapping(value = "/id", method=RequestMethod.GET)
public String getUserByUserId(@PathVariable("userId") String userId){
// Common login
}
Вы можете даже реализовать для каждой конечной точки валидаторы, чтобы проверить, является ли ваш @PathVariable действительным или нет в случае Long
или String
Вот некоторые ссылки ref1 , ref2