![](/img/trans.png)
[英]Spring webflux Netty (no tomcat): How to expose proto as json endpoints without duplication of code?
[英]Spring WebFlux Functional Endpoints + @JsonView how?
我正在使用具有功能端點的Spring Boot 2.0.4 WebFlux。
我想在GET / books和GET / books / {id}中返回不同的模型。 前者的簡短模型和后者的完整模型。
我可以使用@JsonIgnore從JSON序列化中過濾掉屬性,但是會從使用此模型的所有響應中刪除任何特定字段。
Jackson提供了@JsonView作為解決方案,但該解決方案僅與Annotated Controllers兼容,我使用的功能端點如下:
@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);
}
}
所以基本上我問是否有任何已知的方法我可以使用@JsonView與功能端點,或者如果有任何其他方式我可以實現我想要做的事情。
您可以使用序列化提示指定JSON視圖,如下所示:
public class BookHandler {
public Mono<ServerResponse> getBook(ServerRequest request) {
return ServerResponse
.ok()
.hint(Jackson2CodecSupport.JSON_VIEW_HINT, MyJacksonView.class)
.body(...);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.