반응형
이전 포스팅을 쓰다보니 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를 써서 에러를 발생시키든 어떤 기본 객체를 반환하든 하는 방식이 제일 심플한 거 같다.
반응형
'Spring' 카테고리의 다른 글
[Spring] Spring Boot 테스트에 사용할 h2 DB 설정 방법 (0) | 2023.06.24 |
---|---|
[Spring] Bean Lazy Initialization 사용법 (0) | 2023.06.18 |
[Spring] WebClient를 쓰기 전 반드시 알아야 하는 것 (0) | 2023.04.16 |
[Spring] Spring Boot Gradle 프로젝트를 JAR 파일로 빌드하기 (0) | 2023.02.14 |
[Spring] RestTemplate vs WebClient 어떤 걸 써야 할까? (0) | 2023.02.14 |
댓글