Webエンジニアのメモ帳

技術的な話を中心に書いています。

【Spring】RestTemplateの使い方

SpringでHTTP通信をする際に使える、RestTemplateの使い方を説明します。

リクエストを行う方法

リクエストパラメータもリクエストボディーもなしでGETする場合

RestTemplate restTemplate = new RestTemplate();
String url = "http://sample.co.jp/test";
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, null, String.class);

なお、POSTする場合はHttpMethod.GETをHttpMethod.POSTにすればOKです。

JsonをPOSTする場合

JSONをリクエストボディーに入れてPOSTする場合のコードです。

RestTemplate restTemplate = new RestTemplate(); 
String url = "http://sample.co.jp/test";
String requestJson = "{'key':'value'}";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<String>(requestJson, headers);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);

リクエストパラメータに値を入れてPOSTする場合

リクエストパラメータに値を入れる場合は、UriComponentsBuilderいうクラスを使ってURLを生成します。

RestTemplate restTemplate = new RestTemplate(); 
String url = "http://sample.co.jp/test";
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(url)
  .queryParam("key1", "value1")
  .queryParam("key2", "value2");

// System.out.println(builder.toUriString());
// 以下が出力されます
// http://sample.co.jp/test?key1=value1&key2=value2

ResponseEntity<String> response = restTemplate.exchange(builder.toUriString(), HttpMethod.POST, null, String.class);

なお、GETの場合はHttpMethod.POSTをGETにするだけでOKです。

レスポンスの扱い方

レスポンスからステータスコードやレスポンスボディーを取得する方法は以下の通りです。

int statusCode = response.getStatusCode();
String responseBody = response.getBody();