Spring WebFlux-如何返回与Mono源不同的类型?

时间:2018-10-02 13:21:22

标签: spring rx-java spring-webflux

使用Spring Reactor进行第一步时,我正在努力解决RestController如何将输入参数返回不同的bean。我有以下方法:

var categories = posts.Select(p => p.CategoryName).Distinct().Select((c, i) => new Category
{
    Id = i,
    Name = c
}).ToArray();

假设repository :: save返回一个布尔值以指示成功或失败,那么一个人怎么能抓住这个返回值并用它返回一些自定义DTO作为响应呢?因此,最终方法将类似于:

@PostMapping
public Mono<Site> create( @RequestBody Publisher<Site> site )
{
    return Mono.
            from( site ).
            doOnNext( repository::save);
}

1 个答案:

答案 0 :(得分:3)

使用Mono::mapMono:flatMap进行转换。

@PostMapping
public Mono<SomeResponse> create( @RequestBody Publisher<Site> site )
{
    return Mono.
            from( site )
            .map(repository::save)
            .map(booleanVar -> createSomeResponseFromBoolean(booleanVar));
}
相关问题