RestTemplate이란 무엇일까?
RestTemplate는 Spring Framework에서 제공하는 HTTP 클라이언트 라이브러리
주로 RESTful 웹 서비스와의 통신을 간편하게 처리할 수 있도록 설계되었다.
RestTemplate을 사용하면 다양한 HTTP 메서드(GET, POST, PUT, DELETE 등)를 활용하여
원격 서버와의 데이터를 송수신할 수 있다
이 라이브러리는 외부 API와의 통합이나 마이크로서비스 간의 통신에 자주 사용된다
Spring 3.0부터 지원한다
📢 REST 서비스의 호출 방법
RestTemplate
Spring 3부터 지원, REST API 호출이후 응답을 받을 때까지 기다리는 동기 방식
AsyncRestTemplate
Spring 4에 추가된 비동기 RestTemplate이다.
WebClient
Spring 5에 추가된 논블럭, 리엑티브 웹 클라이언트로 동기, 비동기 방식을 지원한다
⭐ RestTemplate 메서드
HTTP 요청을 보내는 주요 방법
RestTemplate를 사용하여 HTTP 요청을 보내는 방법으로는
getForEntity, postForEntity, exchange 3개를 배웠다
이름 그대로 Get 요청, Post 요청, 이외의 다른 요청들은 exchange를 사용하게 된다
Get 요청
@Service
public class MyService {
private final RestTemplate restTemplate;
@Autowired
public MyService(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
public void getRequest(String apiUrl) {
// HTTP GET 요청 보내기
ResponseEntity<String> responseEntity = restTemplate.getForEntity(apiUrl, String.class);
// 응답 값
String responseBody = responseEntity.getBody();
System.out.println("GET Response: " + responseBody);
}
}
GET 요청: getForEntity 메서드는 주어진 URL로 GET 요청을 보내고, 응답을 ResponseEntity 객체로 받는다
응답 본문은 getBody 메서드로 가져올 수 있다
Post 요청
@Service
public class MyService {
private final RestTemplate restTemplate;
@Autowired
public MyService(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
public void postRequest(String apiUrl, Object requestPayload) {
// HTTP POST 요청 보내기
HttpEntity<Object> request = new HttpEntity<>(requestPayload);
ResponseEntity<String> responseEntity = restTemplate.postForEntity(apiUrl, request, String.class);
// 응답 값
String responseBody = responseEntity.getBody();
System.out.println("POST Response: " + responseBody);
}
}
POST 요청: postForEntity 메서드는 주어진 URL로 POST 요청을 보내고, 요청 본문으로 데이터를 전송한다.
응답은 역시 ResponseEntity 객체로 받으며, 본문은 getBody 메서드로 가져온다
PUT요청(exchange 메서드 사용)
@Service
public class MyService {
private final RestTemplate restTemplate;
@Autowired
public MyService(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
public void putRequest(String apiUrl, Object requestPayload) {
// HTTP PUT 요청 보내기
HttpEntity<Object> request = new HttpEntity<>(requestPayload);
ResponseEntity<String> responseEntity = restTemplate.exchange(apiUrl, HttpMethod.PUT, request, String.class);
// 응답 값
String responseBody = responseEntity.getBody();
System.out.println("PUT Response: " + responseBody);
}
}
PUT 요청: exchange 메서드는 HTTP 메서드(HttpMethod.PUT)와 함께 요청을 보내며,
요청 본문으로 데이터를 전송한다. 응답은 ResponseEntity 객체로 받고, 본문은 getBody 메서드로 가져온다
RestTemplate을 사용하여 다양한 HTTP 요청을 손쉽게 처리할 수 있다!
'TIL' 카테고리의 다른 글
TIL - 2024/05/24 (0) | 2024.05.24 |
---|---|
TIL - 2024/05/23 (0) | 2024.05.23 |
TIL - 2024/05/21 (0) | 2024.05.21 |
TIL - 2024/05/20 (2) | 2024.05.20 |
TIL - 2024/05/17 (0) | 2024.05.17 |