1
1

RestTemplateクラスを使用してHTTPレスポンスの詳細を取得する

Last updated at Posted at 2024-01-28

概要

SpringフレームワークのRestTemplateを使用してHTTPリクエストを送り、そのレスポンスの詳細を取得する方法をまとめた。

環境

項目 バージョン
JDK Oracle JDK 21.0.1
SpringBoot 3.0.1
SpringWeb 6.0.3

RestTemplateクラスの主要なメソッド

下表の通り、HTTPメソッドに対応したメソッドが用意されている。

HTTPメソッド RestTemplateクラスのメソッド
GET getForObject
getForEntity
PUT put
POST postForLocation
postForObject
postForEntity
DELETE delete
汎用 exchange

HTTPレスポンスの詳細を取得する方法

HTTPレスポンスのステータスコードやヘッダーの内容を参照するには、レスポンスをResponseEntityに格納する必要がある。
RestTemplateクラスのメソッドで戻り値としてEntityを取るGETPOSTについては、対応するgetForEntitypostForEntityを使用すれば良い。
戻り値として、Entityを取らないPUTDELETEについては工夫が必要になる。

戻り値としてEntityを取るメソッドの実装例

例としてGETの場合を示す。

GETの実装例
ResponseEntity<Sample> responseEntity = resTemplate.getForEntity(URI, Sample.class);
int statusCode = responseEntity.getStatusCode().value();
System.out.println("StatusCode is " + statusCode + ".");
//実行結果:StatusCode is 200.

戻り値としてEntityを取らないメソッドの実装例

戻り値としてEntityを取らないメソッドについては、汎用的なexchangeメソッドを使用して通信し、レスポンスをEntityに格納する。
例として、DELETEの場合を示す。

DELETEの実装例
RequestEntity<Void> requestEntity = RequestEntity.delete(URI).build();
ResponseEntity<Void> responseEntity = restTemplate.exchange(requestEntity, Void.class);
int statusCode = responseEntity.getStatusCode().value();
System.out.println("StatusCode is " + statusCode + ".");
//実行結果:StatusCode is 204.

参考文献

土岐孝平著、「プロになるためのSpring入門」、技術評論社、2023年7月25日 初版 第1刷

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1