簡體   English   中英

Spring WebFlux功能端點+ @JsonView怎么樣?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM