본문 바로가기
개발자 로그

Spring RestTemplate api 예시 코드

by Hello_World_! 2025. 7. 18.
반응형

 

🔗 Spring RestTemplate을 이용한 REST API 호출 방법 (GET & POST)

1. RestTemplate이란?

RestTemplate은 Spring Framework에서 제공하는 HTTP 통신용 템플릿 클래스입니다.
외부 REST API 서버와의 연동을 간편하게 수행할 수 있으며, Spring 5까지 널리 사용되었습니다.
Spring Boot 프로젝트에서는 Bean으로 등록해 사용하거나 new RestTemplate()로 직접 생성할 수 있습니다.

2. HttpURLConnection vs RestTemplate 비교

구분 HttpURLConnection RestTemplate
라이브러리 Java 표준 API (java.net) Spring Framework 내장
사용 난이도 낮음 (직접 연결, Stream 처리 필요) 높음 (간단한 메서드 호출)
응답 처리 InputStream 수동 처리 객체 자동 매핑 지원
타입 지원 String, byte[], JSON 파싱 직접 Generic, DTO 자동 역직렬화
대표 메서드 없음 getForObject(), postForEntity() 등

 

https://yongwoo2000.tistory.com/9


3. RestTemplate GET 방식 예제


// DTO 클래스 예시
public class Post {
    private int userId;
    private int id;
    private String title;
    private String body;

    // Getter/Setter
}

// GET 요청 메서드
public String callApiWithGet() {
    RestTemplate restTemplate = new RestTemplate();
    String url = "https://jsonplaceholder.typicode.com/posts/1";

    Post post = restTemplate.getForObject(url, Post.class);
    return "제목: " + post.getTitle() + ", 내용: " + post.getBody();
}

GET 방식은 조회할 때 사용하며, getForObject 또는 getForEntity 메서드를 사용할 수 있습니다.


4. RestTemplate POST 방식 예제 (JSON 전송)


// 요청용 DTO 클래스
public class PostRequest {
    private String title;
    private String body;
    private int userId;

    // 생성자, Getter/Setter
}

// POST 요청 메서드
public String callApiWithPost() {
    RestTemplate restTemplate = new RestTemplate();
    String url = "https://jsonplaceholder.typicode.com/posts";

    PostRequest request = new PostRequest("Hello", "This is a post", 1);
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);

    HttpEntity<PostRequest> entity = new HttpEntity<>(request, headers);
    ResponseEntity<String> response = restTemplate.postForEntity(url, entity, String.class);

    return response.getBody();
}

POST 방식에서는 HttpHeaders를 설정하고, HttpEntity로 JSON Body와 함께 요청을 전송합니다.


5. RestTemplate Bean 등록 (Spring 환경)


@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

Spring Boot에서는 위와 같이 @Bean으로 등록해두고, @Autowired 또는 @RequiredArgsConstructor로 주입받아 사용할 수 있습니다.


6. 결론

  • RestTemplate은 Spring 프로젝트에서 REST API를 간결하게 호출할 수 있는 도구입니다.
  • GET과 POST 요청을 쉽게 처리할 수 있으며, DTO 매핑과 예외처리도 손쉽게 구현할 수 있습니다.
  • Spring 5 이후에는 WebClient로 점차 대체되지만, 현재도 매우 널리 사용되고 있습니다.

✔️ 실무에서 외부 API 연동이 필요한 경우, RestTemplate을 활용하면 안정적이고 유지보수가 쉬운 구조를 만들 수 있습니다.