Spring WebFlux - как вернуть тип, отличный от источника Mono? - PullRequest
0 голосов
/ 02 октября 2018

Делая мои первые шаги с Spring Reactor, я изо всех сил пытаюсь, как RestController может вернуть другой боб входному параметру.У меня есть следующий метод:

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

Предполагая, что repository :: save возвращает логическое значение, указывающее на успех или неудачу, как можно получить это возвращенное значение и использовать его для возврата некоторого пользовательского DTO в ответ?Таким образом, последний метод будет выглядеть примерно так:

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

1 Ответ

0 голосов
/ 02 октября 2018

Используйте Mono :: map и Mono: flatMap для преобразований.

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