[java] RestTemplate의 get~ 메소드 중에는 왜 request 인자가 없을까?

get 메소드들에는 request 인자가 없다.

 

post 메소드들에는 request 인자가 있다.

 

이유는 get 방식과 post 방식의 차이에서 기인한다.

 



1. POST 요청의 특성
POST 메서드는 서버로 데이터를 전송할 때 주로 사용됩니다. 이때 서버는 클라이언트로부터 전달된 데이터를 바탕으로 리소스를 생성하거나 업데이트합니다. 따라서 postForObject와 같은 메서드는 데이터를 전송하기 위한 request body가 필요합니다. (HTTP 요청 본문에 데이터를 포함)

   예를 들어, 다음과 같이 객체를 서버로 보내는 상황입니다:

   java
   MyObject requestObject = new MyObject();
   ResponseEntity<MyResponse> response = restTemplate.postForObject(url, requestObject, MyResponse.class);
   

   여기서 requestObject는 서버로 보내질 데이터를 나타냅니다.

2. GET 요청의 특성:  
   반면에 GET 요청은 서버로부터 리소스를 조회할 때 사용됩니다. GET 요청은 서버에서 데이터를 조회하는 작업으로, 일반적으로 데이터를 서버로 전송하지 않습니다. GET 요청의 핵심은 URL에 포함된 경로 및 쿼리 매개변수를 통해 리소스를 지정하고 그 결과를 반환받는 것입니다. 따라서 getForEntity나 getForObject와 같은 메서드에서는 본문(body)에 데이터를 포함할 필요가 없으므로 별도의 request 객체를 전달할 필요가 없습니다.

   예를 들어:

   java
   ResponseEntity<MyResponse> response = restTemplate.getForEntity(url, MyResponse.class);
   

   이 요청은 서버에 어떤 데이터를 전달하지 않고, 주어진 url의 리소스를 조회하는 것에만 집중합니다.

---

- POST: 서버에 데이터를 보내기 위해 본문(body)에 데이터를 담아야 하므로 request 객체를 필요로 합니다.
- GET: 서버에서 데이터를 조회하기 위한 요청이므로 본문이 없고, request 객체를 받지 않습니다.