概要
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を取るGET
とPOST
については、対応するgetForEntity
とpostForEntity
を使用すれば良い。
戻り値として、Entityを取らないPUT
とDELETE
については工夫が必要になる。
戻り値として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刷