RestTemplate
- HTTP 통신을 간편하게 처리할 수 있는 클래스
- RESTful 웹 서비스와 통신하기 위해 사용되며, 간단한 API 호출부터 복잡한 요청과 응답까지 처리할 수 있음
RestTemplate의 기능
- HTTP 요청 보내기 : RestTemplate을 사용하여 GET, POST, PUT, DELETE 등의 다양한 HTTP 메서드를 사용하여 서버에 요청을 보낼 수 있다.
- HTTP 응답 받기 : RestTemplate을 사용하여 서버로부터 받은 HTTP 응답을 처리할 수 있습니다. JSON, XML 등의 응답 데이터를 Java 객체로 변환하는 기능을 제공
- HTTP 요청 파라미터와 헤더 설정: RestTemplate을 사용하여 요청에 필요한 파라미터와 헤더를 설정할 수 있다.
- 에러 핸들링: RestTemplate을 사용하여 서버로부터 받은 HTTP 에러 응답을 처리하고 예외를 발생시킬 수 있다.
- 인터셉터 설정: RestTemplate에 인터셉터를 등록하여 요청과 응답을 가로채고 처리할 수 있다
RestTemplate 통신
- 예제는 소셜 로그인의 일부로 받아온 ACCESSTOKEN을 이용하여 USERINFO를 얻어오기 위해 사용된 예제입니다
public String requestAccessToken(OAuthLoginParams params) {
String url = authUrl + "/oauth/token";
HttpHeaders httpHeaders = new HttpHeaders(); // 헤더 설정
httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> body = params.makeBody(); // 바디 설정
body.add("grant_type", GRANT_TYPE);
body.add("client_id", clientId);
HttpEntity<?> request = new HttpEntity<>(body, httpHeaders); // Http 데이터를 담음
KakaoTokens response = restTemplate.postForObject(url, request, KakaoTokens.class); //요청 후 테이터 저장
assert response != null;
return response.getAccessToken();
}
HttpEntity
- RestTemplate을 사용하여 HTTP 요청을 보낼 떄 헤더와 바디를 포함하여 보내함 이를 지원하는 Entity가 HttpEntity이다
- HttpEntity의 파라미터는 2가지
- body : HTTP 요청의 바디에 해당하는 데이터를 담는다. 주로 JSON, XML 등의 데이터를 포함한다
MultiValueMap, Map, 또는 다른 클래스를 사용하여 구성할 수 있다.
- headers : HTTP 요청의 헤더에 해당하는 데이터를 포함한다. 주로 Content-Type, Authorization 등의 헤더 정보를 포함한다.
HttpHeaders 클래스를 사용하여 구성할 수 있습니다.
'JAVA > Spring' 카테고리의 다른 글
Spring 예외 처리 [Error, Checked/UnChecked Exception] (2) | 2024.10.14 |
---|---|
[스프링 학습] 1. 오브젝트와 IoC (0) | 2023.10.23 |
Spring Template이란? (0) | 2023.07.23 |
JWT Token (0) | 2023.07.23 |
HttpServletRequest와 @RequestBody (0) | 2023.07.23 |