1. RestTemplate이란

    1. Spring 3부터 지원하는 REST API 호출 이후 응답을 받을 때까지 기다리는 동기 방식
    2. 간편하게 REST 방식 API를 호출할 수 있는 spring 내장 클래스
    3. Spring 5버전 부터는 WebFlux의 WebClient가 등장하면서 DEPRECATED 예정이며 WebClient는 Blocking, Non-Blocking, Sync, Async 지원
  2. 주요 메서드

    Untitled

  3. 사용 예제

    RestTemplate restTemplate = new RestTemplate();
    
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
    
    MultiValueMap<String, String> body = new LinkedMultiValueMap<>();
    body.set("client_id", {client_id});
    body.set("client_secret", {client_secret});
    body.set("scope", "user.read profile openid offline_access");
    body.set("code", {code});
    body.set("redirect_uri", {redirect_uri});
    body.set("grant_type", "authorization_code");
    
    HttpEntity<MultiValueMap<String, String>> req = new HttpEntity<>(body, headers);
    
    ResponseEntity<Map> res = restTemplate.postForEntity({url}, req, Map.class);
    
    RestTemplate restTemplate = new RestTemplate();
    
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
    headers.set("X-Request-Source", "Desktop");
    
    HttpEntity request = new HttpEntity(headers);
    
    ResponseEntity<String> response = restTemplate.exchange(
            url,
            HttpMethod.GET,
            request,
            String.class,
            1 // uri 파라미터 값(Map 형식으로 넣을 수 있음)
    );