본문 바로가기
Spring

[Spring] WebClient에서 204(no content), 빈 response body 다루기

by 노력남자 2023. 4. 16.
반응형

이전 포스팅을 쓰다보니 WebClient에서 항상 http status를 204(no content)로 내려주는 api, 경우에 따라 response body를 빈 값으로 내려주는 api는 어떻게 다뤄야 하는지 궁금해졌다.

 

항상 http status를 204(no content)를 내려주는 api 다루기
(= 항상 빈 response body를 내려주는 api) 

 

http status 204는 기본으로 response body를 빈 값으로 리턴한다.

 

오 그럼 bodyToMono를 Unit으로 받으면 되는 거 아니야? 라고 생각했다.

 

WebClient.create("ORDER_API")
        .delete()
        .uri("/order/$orderId")
        .retrieve()
        .bodyToMono(Unit::class.java)

 

응 아니다.

 

WebClient로 response body를 빈 값으로 리턴해주는 api를 호출하면 Mono.empty()를 반환한다.

 

WebClient.create("ORDER_API")
        .delete()
        .uri("/order/$orderId")
        .retrieve()
        .exchangeToMono { Mono.just(Unit) }

 

switchIfEmpty로 받을 수도 있겠지만 굳이 그렇게 하지 않고 exchangeToMono로 바로 Mono.just(Unit)을 리턴하게 하는 방법이 제일 심플한 거 같다.

 

경우에 따라 http status를 204(no content)로 내려주는 api
(= 경우에 따라 response body를 빈 값으로 내려주는 api)

 

예를 들어 주문 ID로 주문 정보를 가지고 오는 api가 있는 경우엔 주문 정보를 없는 경우 http status를 204로 내려준다고 하면

 

WebClient.create("ORDER_API")
        .get()
        .uri("/order/$orderId")
        .retrieve()
        .bodyToMono(Order::class.java)
        .switchIfEmpty { Mono.error(Exception()) }

 

status가 204인지 아닌지를 판단해서 하는 것보다, switchIfEmpty를 써서 에러를 발생시키든 어떤 기본 객체를 반환하든 하는 방식이 제일 심플한 거 같다.

반응형

댓글