RestTemplate은 Spring Framework에서 제공하는 동기식 HTTP 클라이언트입니다. RESTful 웹 서비스를 호출하는 데 사용되며, 서버 간 통신을 쉽게 구현할 수 있게 해줍니다.
간단하고 직관적인 API
HTTP 메서드(GET, POST, PUT, DELETE 등) 지원
요청/응답 변환 자동화
오류 처리 기능
Spring Boot 프로젝트에서는 spring-boot-starter-web에 이미 포함되어 있습니다.
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
String url = "https://api.example.com/users/1";
User user = restTemplate.getForObject(url, User.class);
String url = "https://api.example.com/users";
User newUser = new User("John Doe", "john@example.com");
User createdUser = restTemplate.postForObject(url, newUser, User.class);
String url = "https://api.example.com/users/1";
User updatedUser = new User("John Updated", "john@example.com");
restTemplate.put(url, updatedUser);
String url = "https://api.example.com/users/1";
restTemplate.delete(url);
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer " + token);
HttpEntity<String> entity = new HttpEntity<>("parameters", headers);
ResponseEntity<User> response = restTemplate.exchange(url, HttpMethod.GET, entity, User.class);
try {
ResponseEntity<User> response = restTemplate.getForEntity(url, User.class);
} catch (HttpClientErrorException e) {
// 4xx 오류 처리
} catch (HttpServerErrorException e) {
// 5xx 오류 처리
}
ResponseEntity<User> response = restTemplate.getForEntity(url, User.class);
HttpStatus status = response.getStatusCode();
HttpHeaders headers = response.getHeaders();
User user = response.getBody();
GitHub API를 사용한 사용자 정보 조회:
RestTemplate restTemplate = new RestTemplate();
String url = "https://api.github.com/users/{username}";
GitHubUser user = restTemplate.getForObject(url, GitHubUser.class, "octocat");
System.out.println("Name: " + user.getName() + ", Followers: " + user.getFollowers());
커넥션 풀링: HttpComponentsClientHttpRequestFactory 사용
타임아웃 설정: setConnectTimeout(), setReadTimeout() 메서드 사용
재시도 메커니즘 구현: Spring Retry 라이브러리 활용