У меня есть несколько ролей и один эндпоинт. Столкнулся с такой ситуацией, что для каждой роли нужен свой набора параметров. Ну вот, например, есть роль
CONSUMER и есть роль
PRODUCER. И есть эндпоинт, к которому обе роли имеют доступ:
@PostMapping("/order")
public void pay(@RequestParam(value = "consumer-id") Integer consumerId,
@RequestParam(value = "consumer-region-code") Integer regionCode,
@AuthenticationPrincipal AuthorizedUser user) {
...
}
На самом деле для пользователя
CONSUMER здесь было бы достаточно иметь только принципал. А вот для пользователя
PRODUCER нужен только
consumerId
и
regionCode
, зато не нужен принципал. Из-за этого метод очень сильно разрастается, каждая роль привносит что-то новое. В идеале было бы сделать два отдельных метода на один эндпоинт:
@PostMapping("/order")
public void pay(@AuthenticationPrincipal AuthorizedUser user) {
...
}
@PostMapping("/order")
public void pay(@RequestParam(value = "consumer-id") Integer consumerId,
@RequestParam(value = "consumer-region-code") Integer regionCode) {
...
}
Но тут Spring ошибку бросит. Как я могу решить данную проблему с лишними параметрами и разрастанием методов?