RestTemplate( org.springframework.web.client.RestTemplate.class )
org.springframework.web.client.RestTemplate.class [ spring-web-5.3.20.jar ]
HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 원격 서버에 요청을 보내고, 응답을 받을 수 있습니다.
또한, 헤더 설정, 요청 매개변수 전달, 응답의 처리 등 다양한 기능을 제공합니다.
@Override
public <T> ResponseEntity<T> exchange( URI url, HttpMethod method, @Nullable HttpEntity<?> requestEntity
, ParameterizedTypeReference<T> responseType) throws RestClientException { ~ }
// url: 요청을 보낼 URL
// method: HTTP 메서드 (GET, POST, PUT, DELETE 등)
// requestEntity: 요청 시 사용할 HttpEntity 객체. 이를 통해 헤더, 요청 본문 등을 설정할 수 있습니다.
// responseType: 응답을 어떤 형태로 받을지를 나타내는 클래스
exchange 메서드는 ResponseEntity<T>를 반환한다.
이 객체는 HTTP 응답의 상태 코드, 헤더 및 응답 본문을 포함하고 있다.
이를 통해 세부적인 응답 정보를 확인할 수 있습니다.
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
public class MyRestClient {
public static void main(String[] args) {
// RestTemplate 인스턴스 생성
RestTemplate restTemplate = new RestTemplate();
// 서버의 API 엔드포인트 URL
String apiUrl = "https://api.example.com/data";
// HTTP 요청 시 사용할 헤더 설정
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer yourAccessToken");
HttpEntity<?> requestEntity = new HttpEntity<>(headers);
// exchange 메서드를 사용하여 GET 요청 보내기
ResponseEntity<String> responseEntity = restTemplate.exchange(apiUrl, HttpMethod.GET, requestEntity, String.class);
// 응답 정보 확인
int statusCode = responseEntity.getStatusCodeValue();
HttpHeaders responseHeaders = responseEntity.getHeaders();
String responseBody = responseEntity.getBody();
System.out.println("Status Code: " + statusCode);
System.out.println("Response Headers: " + responseHeaders);
System.out.println("Response Body: " + responseBody);
}
}
java.net.URI.class [ java.base( C: / dfp-project / jdk-17 / lib / jrt-fs.jar ) ]
Uniform Resource Identifier(URI)를 나타내기 위한 Java의 클래스.
( URI는 인터넷에서 리소스를 고유하게 식별하기 위한 표준화된 방법을 제공하는 문자열 )
java.net.URI 클래스는 URI를 파싱하고, 생성하고, 조작하는 데 사용됩니다.
org.springframework.http.HttpMethod.class [ spring-web-5.3.20.jar ]
HTTP 요청 메서드를 나타내는 열거형(Enumeration). 이 열거형은 HTTP 프로토콜에서 정의된 여러 메서드를 나타낸다
org.springframework.http.HttpHeaders.class [ spring-web-5.3.20.jar ]
HTTP 헤더를 나타내는 클래스.
HTTP 요청이나 응답의 헤더를 효과적으로 다룰 수 있도록 도와주며, 다양한 헤더 정보를 쉽게 추가하고 읽을 수 있는 메서드를 제공
org.springframework.http.HttpEntity.class [ spring-web-5.3.20.jar ]
HTTP 요청 또는 응답의 엔터티(body)를 표현하는 데 사용됨
body 데이터를 캡슐화하고 조작할 수 있는 기능을 제공
org.springframework.http.ResponseEntity.class [ spring-web-5.3.20.jar ]
HTTP 응답을 나타내는 클래스입니다. 이 클래스는 HTTP 응답 상태 코드, 헤더, 본문 등을 포함하는 풍부한 응답 정보를 제공합니다.
주로 컨트롤러 메서드의 반환 타입으로 사용되며, 클라이언트에게 전송되는 HTTP 응답을 정의하는 데 유용.
org.springframework.core.ParameterizedTypeReference.class [ spring-core-5.3.20.jar ]
주로 RestTemplate이나 ResponseEntity 같은 클래스에서 HTTP 응답을 처리할 때, 제네릭 타입 정보를 유지하고 이를 활용하기 위해 이 클래스를 사용
일반적으로 Java에서는 제네릭 타입 정보는 런타임에 소거되기 때문에
컴파일 타임에는 제네릭 타입을 사용할 수 있지만, 런타임에는 실제 타입 정보가 손실됩니다.
이로 인해 제네릭 타입을 사용하는 메서드나 클래스에서 실제 타입 정보를 얻는 것이 어렵습니다.