webflux 把返回的Flux对象转换成Mono对象

在使用一个对象列表时用Flux

public Mono<ServerResponse> listPeople(ServerRequest request) { 
        Flux<Person> people = repository.allPeople();
        return ok().contentType(APPLICATION_JSON).body(people, Person.class);
    }

但是当需要返回一个自定义的json数据时,就需要把Flux转换成Mono,使用collectList()转换为一个对象列表,代码如下:

public Mono<ServerResponse> getTitle(ServerRequest request) {
        Mono<List<Title>> titleList = feignService.getTitle().collectList();
        return titleList.map(data -> ReactiveResponse.builder()
                            .message(Message.SUCCESS)
                            .status(HttpStatus.SUCCESS)
                            .data(data)
                            .build()
                ).flatMap(data -> ServerResponse.ok().contentType(MediaType.APPLICATION_JSON)
                                    .bodyValue(data));

    }


来自为知笔记(Wiz)


posted on 2022-10-27 20:33  白衣风云  阅读(1018)  评论(0编辑  收藏  举报

导航