dba*_*bar 5 spring json hibernate jackson spring-webflux
我正在使用 Spring Boot 2.0.4 WebFlux 和功能端点。
我想在 GET /books 和 GET /books/{id} 中返回不同的模型。前者是简短模型,后者是完整模型。
我可以使用 @JsonIgnore 从 JSON 序列化中过滤出属性,但这会从使用此模型的所有响应中删除任何特定字段。
Jackson 提供了 @JsonView 作为解决方案,但该解决方案仅与带注释的控制器兼容,我正在使用如下功能端点:
@Configuration
public class BookRouter {
@Bean
public RouterFunction<ServerResponse> routeBooks(BookHandler bookHandler) {
return RouterFunctions
.route(RequestPredicates.GET("/books")
.and(RequestPredicates.accept(MediaType.APPLICATION_JSON)), bookHandler::getBooks)
.andRoute(RequestPredicates.GET("/books/{id}")
.and(RequestPredicates.accept(MediaType.APPLICATION_JSON)), bookHandler::getBook);
}
}
Run Code Online (Sandbox Code Playgroud)
所以基本上我问是否有任何已知的方法可以将 @JsonView 与功能端点一起使用,或者是否有任何其他方法可以实现我想做的事情。
您可以使用序列化提示指定 JSON 视图,如下所示:
public class BookHandler {
public Mono<ServerResponse> getBook(ServerRequest request) {
return ServerResponse
.ok()
.hint(Jackson2CodecSupport.JSON_VIEW_HINT, MyJacksonView.class)
.body(...);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
949 次 |
最近记录: |