WebFlux functional: How to detect an empty Flux and return 404?

前端 未结 4 1575
灰色年华
灰色年华 2020-12-30 10:03

I\'m having the following simplified handler function (Spring WebFlux and the functional API using Kotlin). However, I need a hint how to detect an empty Flux and then use n

4条回答
  •  醉酒成梦
    2020-12-30 10:46

    From a Mono:

    return customerMono
               .flatMap(c -> ok().body(BodyInserters.fromObject(c)))
               .switchIfEmpty(notFound().build());
    

    From a Flux:

    return customerFlux
               .collectList()
               .flatMap(l -> {
                   if(l.isEmpty()) {
                     return notFound().build();
    
                   }
                   else {
                     return ok().body(BodyInserters.fromObject(l)));
                   }
               });
    

    Note that collectList buffers data in memory, so this might not be the best choice for big lists. There might be a better way to solve this.

提交回复
热议问题