카테고리 없음

#18 RestTemplate

kmsoon 2024. 5. 24. 16:39
String url = "https://api.example.com/resource";
MyRequestObject requestObject = new MyRequestObject();
MyResponseObject responseObject = restTemplate.postForObject(url, requestObject, MyResponseObject.class);

RestTemplate는 스프링 프레임워크에서 제공하는 클래스로, Java에서 RESTful 웹 서비스와의 상호작용을 단순화하는 역할을 합니다. RestTemplate는 REST API를 호출하고, HTTP 요청을 보내고, HTTP 응답을 처리하는 데 사용됩니다. RestTemplate는 다양한 HTTP 메서드(GET, POST, PUT, DELETE 등)를 지원하며, JSON, XML 등의 데이터 형식을 쉽게 처리할 수 있도록 도와줍니다.

다음은 RestTemplate의 주요 기능과 사용법에 대한 설명입니다.

 

 

 

 

 

주요 기능

  1. HTTP 메서드 지원: RestTemplate는 GET, POST, PUT, DELETE 등의 HTTP 메서드를 지원합니다.
  2. 응답 데이터 처리: JSON, XML 등 다양한 형식의 응답 데이터를 처리할 수 있습니다.
  3. 예외 처리: HTTP 상태 코드에 따른 예외 처리를 자동으로 수행합니다.
  4. URI 템플릿: URI 템플릿을 사용하여 URL을 동적으로 구성할 수 있습니다.
  5. 커스터마이징: 커스텀 RequestFactory, 인터셉터 등을 통해 동작을 확장하거나 변경할 수 있습니다.

 

 

 

 

 

사용법

1. RestTemplate 객체 생성

RestTemplate 객체를 생성하는 방법은 두 가지가 있습니다. 직접 생성하거나, 스프링 빈으로 정의하는 방법입니다.

 

// 직접 생성
RestTemplate restTemplate = new RestTemplate();

// 스프링 빈으로 정의 (스프링 구성 클래스에서)
@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}

 

 

2. GET 요청

String url = "https://api.example.com/resource";
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
String responseBody = response.getBody();

 

 

3. POST 요청

String url = "https://api.example.com/resource";
MyRequestObject requestObject = new MyRequestObject();
MyResponseObject responseObject = restTemplate.postForObject(url, requestObject, MyResponseObject.class);

 

 

4. PUT 요청

String url = "https://api.example.com/resource";
MyRequestObject requestObject = new MyRequestObject();
restTemplate.put(url, requestObject);

 

 

5. DELETE 요청

String url = "https://api.example.com/resource";
restTemplate.delete(url);

 

 

6. URI 템플릿 사용

String url = "https://api.example.com/resource/{id}";
Map<String, String> uriVariables = new HashMap<>();
uriVariables.put("id", "123");
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class, uriVariables);

 

 

7. 예외 처리

RestTemplate는 기본적으로 HTTP 상태 코드에 따라 RestClientException 또는 그 하위 예외를 던집니다. 커스텀 예외 처리를 원하면 ResponseErrorHandler를 설정할 수 있습니다.

restTemplate.setErrorHandler(new ResponseErrorHandler() {
    @Override
    public boolean hasError(ClientHttpResponse response) throws IOException {
        return response.getStatusCode().isError();
    }

    @Override
    public void handleError(ClientHttpResponse response) throws IOException {
        // 커스텀 예외 처리 로직
    }
});