Заранее я не говорю о Content Negotiation
.Давайте предположим, что у меня есть простая сущность JPA, поскольку она может быть преобразована с помощью соответствующего DTO, это не имеет значения.
@Entity
public class User {
...
private String email;
private String password;
...
}
У меня есть контроллер RESTful с двумя разными маршрутами, защищенным иобщедоступный.
@RestController
public class UserController {
...
@GetMapping("/public")
private User publicRoute() {
return service.getLatestUser();
}
@Secured("...")
@GetMapping("/private")
private User privateRoute() {
return service.getLatestUser();
}
}
Для обоих маршрутов возвращается одна и та же сущность, но в первом случае публичное представление, скажем, для профиля пользователя, без чувствительных элементов, таких как E-Mail и Пароль должен быть возвращен.Однако во втором случае требуется личное представление, скажем, для самого владельца.
Есть ли какой-нибудь элегантный способ сделать это?Я попробовал это на уровне JSON с @JsonIgnore
, но у меня это не сработало.Также я пытался использовать Response
-Objects, но это приводит к большому количеству шаблонного кода!Есть предложения?
См. Также: Рекомендовано Ananthapadmanabhan По этой теме уже существует несколько вопросов / ресурсов: