【发布时间】:2021-08-27 14:47:45
【问题描述】:
我有一个用@JsonView 注释的控制器方法。当前的要求是,如果参数中给出的userId 与经过身份验证的用户匹配,则该方法使用不同的JsonView 返回响应。知道响应类型应保持ResponseEntity<MyObject> 且不应更改为MappingJacksonValue 或其他类型,如何实现这一点。
我正在使用 Spring,所以可能的一种方法是注入默认的 JacksonMapper 并根据方法中的条件更改其 SerializationView。但这里的问题是,注入什么以及如何实现这一点?
// Some controller annotations
@JsonView(Views.Public.class)
public static ResponseEntity<User> getUser(@PathVariable String userId)
User user = userService.getUser(userId);
User authenticated = userService.getAuthenticatedUser();
if (userId.equals(authenticated.getId())) {
// Change the view class to Views.Restricted.class
}
return new ResponseEntity<>(user, HttpStatus.OK);
}
【问题讨论】:
标签: spring spring-boot jackson json-view get-mapping