관리 메뉴

IT.FARMER

webflux null, empty 처리 본문

Spring/Spring WebFlux

webflux null, empty 처리

아이티.파머 2020. 5. 26. 18:51
반응형

webflux null, empty 처리

Mono / Flux

.switchIfEmpty() : Mono/Flux 가 데이터 없이 완료된 경우 이면 대체 Mono, Flux 로 대체 함.

 

 

 

@RequestMapping("/audience/get")
public Mono<?> findAudienceV2(ServerHttpRequest serverHttpRequest) {

    try {
        
        String serverId = serverHttpRequest.getQueryParams().getFirst("server_id");
        String id = serverHttpRequest.getQueryParams().getFirst("id");

        log.debug("server id = {} id = {}", serverId, id);

        assert serverId != null : id != null;

        Mono<List<AudienceDetailEntity>> byAudience = audienceService.findByAudienceReactiveType(id, serverId);

        return byAudience.map(audienceDetailEntities -> {
            Response<List<AudienceDetailEntity>> response;
            response = new Response<>(Response.ResponseCode.SUCCESS.getCode(), Response.ResponseCode.SUCCESS, new Success<>(audienceDetailEntities));
            response.setMessage("Completed finding audience data");
            response.setUrl(serverHttpRequest.getURI().toString());
            return  response;
        }).switchIfEmpty(Mono.defer(() -> {

            List<AudienceDetailEntity> audienceDetailEntities = new ArrayList<>();
            Response<List<AudienceDetailEntity>> response = new Response<>(Response.ResponseCode.SUCCESS.getCode(), Response.ResponseCode.SUCCESS, new Success<>(audienceDetailEntities));
            response.setMessage("nothing audience data");
            response.setUrl(serverHttpRequest.getURI().toString());

            return Mono.just(response);
        }));


    } catch (Exception e) {
        log.error("audience get error", e);
        Response<?> response;
        response = new Response<String>(Response.ResponseCode.ERROR.getCode(), Response.ResponseCode.ERROR, new Error<>(e.getMessage()));
        response.setUrl(serverHttpRequest.getURI().toString());
        response.setMessage("UNKNOWN ERROR - failed finding audience data");

        return Mono.just(response);
    }

}

 

 

 

반응형

'Spring > Spring WebFlux' 카테고리의 다른 글

Spring R2DBC CRUD 예제  (0) 2021.04.29
spring webflux error 처리  (0) 2020.06.22