Spring WebFlux - 如何 return 一个不同于 Mono 源的类型?

Spring WebFlux - how to return a different type than Mono source?

使用 Spring Reactor 做我的第一步,我正在努力研究 RestController 如何 return 一个不同的 bean 作为输入参数。我有以下方法:

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

假设 repository::save return 是一个指示成功或失败的布尔值,如何获取这个 returned 值并将其用于 return 一些自定义 DTO 作为响应?所以最终方法看起来像:

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

使用 Mono::map and Mono:flatMap 进行转换。

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