[SPRING] RestTemplate이란

CHOI IN HO·2024년 1월 22일
0

SPRING

목록 보기
39/45

📌 서론

프로젝트에서 ChatGPT를 활용하던 도중, RestTemplate을 쓴 경험이 있다. 조금 더 자세히 공부하고자 포스트한다.

📌 RestTemplate

  • HTTP 통신을 위한 도구로 RESTful API 웹 서비스와의 상호작용을 쉽게 외부 도메인에서 데이터를 가져오거나 전송할 때 사용되는 스프링 프레임워크의 클래스를 의미합니다.

  • 다양한 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하며 원격 서버와 ‘동기식 방식’으로 JSON, XML 등의 다양한 데이터 형식으로 통신합니다.

  • 동기식 방식으로 요청을 보내고 응답을 받을 때까지 블로킹되며, 요청과 응답이 완료되기 전까지 다음 코드로 진행되지 않습니다. 원격 서버와 통신할 때는 응답을 기다리는 동안 대기해야 합니다

📌 RestTemplate 특징

HTTP 요청 및 응답에 대해 동기식 요청으로 데이터를 주고 받는다.

  • RestTemplate은 기본적으로 ‘동기식 요청’ 처리를 수행하며 요청을 보내고 응답을 받을 때까지 블로킹됩니다.

💡 블로킹 요청(Blocking Request)

  • 클라이언트에서 요청을 보내면 결과가 반환될 때까지 대기를 하는 것을 의미합니다. unblocked 상태가 되면 다음 요청에 대해 처리를 수행합니다.

HTTP 요청 및 응답에 대한 다양한 메서드를 제공한다.

HTTP 요청 및 응답을 자동으로 변환하고 역직렬화한다.

💡 HTTP 요청 및 응답을 ‘자동’으로 변환하고 역직렬화하는 기능을 제공합니다. 이를 위해 RestTemplate은 기본적으로 MessageConverter를 사용합니다.

💡 MessageConverter는 요청 및 응답 바디의 데이터 형식을 변환하고, 요청 및 응답 헤더의 콘텐츠 형식을 설정합니다. RestTemplate은 기본적으로 다양한 MessageConverter를 제공하며, 애플리케이션에서 직접 추가할 수 있습니다.

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

// 요청 매개변수 설정
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<RequestDto> request = new HttpEntity<>(requestDto, headers);

// HTTP 요청 및 응답 처리
ResponseDto responseDto = restTemplate.exchange(url, HttpMethod.POST, request, ResponseDto.class).getBody();

HTTP 요청 및 응답을 다양한 형식으로 처리할 수 있다.

💡 RestTemplate을 이용하여 HTTP 요청 및 응답 처리를 수행하는데 여러 가지 형식으로 요청 및 응답 처리를 할 수 있습니다.
JSON, XML 및 바이너리 데이터 형식과 같은 데이터 형식으로 응답 처리를 할 수 있고 또한 HTTP 요청 및 응답의 부분을 추출하거나 수정할 수 있습니다.

HTTP 요청에 대한 요청 헤더 및 쿼리 매개변수를 설정할 수 있다.

💡 HTTP 요청에 대한 요청 헤더 및 쿼리 매개변수를 설정할 수 있습니다.

  • 요청 헤더는 RestTemplate의 HttpHeaders 클래스를 사용하여 설정할 수 있습니다. HttpHeaders 클래스의 add() 메서드를 사용하여 요청 헤더에 새 항목을 추가할 수 있습니다.

  • 쿼리 매개변수는 RestTemplate의 exchange() 메서드를 호출할 때 UriComponentsBuilder를 사용하여 설정할 수 있습니다. UriComponentsBuilder의 queryParam() 메서드를 사용하여 쿼리 매개변수를 추가할 수 있습니다.

profile
개발자기 되기 위해선 무엇이든!

0개의 댓글