概要
retrieve()とexchangeToMono()を使用した、基本的なPOST通信の方法についてまとめた。
前提
WebClientのBean定義方法などについては以下を参照。
概要 RESTなAPIにアクセスするのはRestTemplateではなくWebClientが今後推奨となるため、WebClientの概要についてまとめた。 WebClientを使用するための準備と、どんなメソッドがあるのかを紹介している[…]
基本的な使い方
retrieve()とexchangeToMono()を使用して、それぞれ以下のメソッドを作成する方法について紹介する。
・POST通信を行い、ボディなしのResponseEntityを取得する
retrieve()の場合
retrieve()でPOST通信を行い、HTTPステータスまたはResponseEntityを取得する。
HTTPステータスを取得
retrieve()でPOST通信を行い、HTTPステータスを取得する。
WebApiClient.java
public HttpStatus postStatusWithRetrieve(URI uri, Object requestBody) {
return webClient.post()
.uri(uri)
.bodyValue(requestBody)
.retrieve()
.toBodilessEntity()
.map(ResponseEntity::getStatusCode)
.block();
}
上記メソッドにリクエストボディを設定する。
上記メソッドを呼ぶことで、ResponseEntity<Void>を保持するMonoを取得する。
上記メソッドにより、取得したResponseEntityからステータスコードのみを取得する。
ResponseEntity<Void>を取得
retrieve()でPOST通信を行い、ResponseEntity<Void>を取得する。
WebApiClient.java
public ResponseEntity<Void> postEntityWithRetrieve(URI uri, Object requestBody) {
return webClient.post()
.uri(uri)
.bodyValue(requestBody)
.retrieve()
.toBodilessEntity()
.block();
}
上記メソッドを呼ぶことで、ResponseEntity<Void>を保持するMonoを取得する。
exchangeToMono()の場合
exchangeToMono()でPOST通信を行い、HTTPステータスまたはResponseEntityを取得する。
HTTPステータスを取得
exchangeToMono()でPOST通信を行い、HTTPステータスを取得する。
WebApiClient.java
public HttpStatus postStatusWithExchange(URI uri, Object requestBody) {
return webClient.post()
.uri(uri)
.bodyValue(requestBody)
.exchangeToMono(res -> Mono.just(res.statusCode()))
.block();
}
Mono.just(…)は、指定した値を保持するMonoを返却する。
上記の場合、ClientResponseが保持するHTTPステータスを保持させている。
ResponseEntity<Void>を取得
exchangeToMono()でPOST通信を行い、ResponseEntity<Void>を取得する。
WebApiClient.java
public ResponseEntity<Void> postEntityWithExchange(URI uri, Object requestBody) {
return webClient.post()
.uri(uri)
.bodyValue(requestBody)
.exchangeToMono(res -> res.toBodilessEntity())
.block();
}
上記メソッドを呼ぶことで、ResponseEntity<Void>を保持するMonoを取得する。
まとめ
☑ bodyValue(…)により、POSTリクエストのボディを簡潔に設定できる
☑ toBodilessEntity()によって、ボディなしのResponseEntity<Void>を取得できる
☑ POST通信のレスポンス取得方法は目的に応じて選択する