반응형

RequestEntity

springframework에서 제공하는 HttpEntity 의 상속클래스.

url 요청을 보낼 때 사용. responseEntity랑 짝꿍임

header, body, method, url, type을 생성자 파라미터로 넘길 수 있다. 

 

RequestEntity 사용 예시

//header 생성
HttpHeaders headers = new HttpHeaders();
headers.add("Accept", MediaType.APPLICATION_JSON_VALUE);
headers.add("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE + ";charset=UTF-8");

//url 생성
URI url = URI.create("https://https://mchch.tistory.com/");

//requestEntity 생성(방법1)
//header, method, url 을 파라미터로 하여 생성자 호출
RequestEntity<String> req1 = new RequestEntity<>(headers, HttpMethod.GET, url);

//body 생성
String body = "test"

//requestEntity 생성(방법2)
RequestEntity<String> req2 = RequestEntity.post(new URI("https://https://mchch.tistory.com/"))
                                          .accept(MediaType.APPLICATION_JSON)
                                          .body(body);

 


RestTemplate

exchange 메소드를 사용해서 http 요청을 보내고

ResponseEntity 객체를 return 받는다

url, method, requestEntity, responseType 을 생성자 파라미터로 넘길 수 있다. 

 

RestTemplate 의 exchange 사용 예시

RestTemplate restTemplate = new RestTemplate();

//RequestEntity와 responseType을 파라미터로 명시함
//ResponseEntity를 리턴받음
ResponseEntity<String> res = restTemplate.exchange(req, String.class);

 


ResponseEntity

springframework에서 제공하는 HttpEntity 의 상속클래스.

url 요청에 응답할 때 사용

body, header, status를 생성자 파라미터로 넘길 수 있다. 

 

ResponseEntity 사용 예시 1

RestTemplate template = new RestTemplate();
//getForEntity : 요청한 URL 주소로 HTTP GET 요청을 보내고,  ResponseEntity를 반환받음
ResponseEntity<String> entity = template.getForEntity("https://example.com", String.class);

//body 추출
String body = entity.getBody();
//헤더부의 contentType 추출
MediaType contentType = entity.getHeaders().getContentType();
//statusCode 추출
HttpStatus statusCode = entity.getStatusCode();

 

 

ResponseEntity 사용 예시 2

 

response Entity를 API url 호출에 대한 응답으로 사용할 수도 있음

//응답 message, 상태코드를 담은 response entity 생성
ResponseEntity<> response1 = new ResponseEntity<>("success", HttpStatus.OK);

//헤더 생성
MultiValueMap<String, String> header = new LinkedMultiValueMap<>();
header.add("Accept", MediaType.APPLICATION_JSON_VALUE);
header.add("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE + ";charset=UTF-8");

//응답 헤더, 상태코드를 담은 response entity 생성
ResponseEntity<> response2 = new ResponseEntity<>(header,  HttpStatus.SERVICE_UNAVAILABLE);

//상태코드는 필수
ResponseEntity<> response3 = new ResponseEntity<>(HttpStatus.OK);



///////////////////////////API 호출, ResponseEntity반환 예시//////////////////

public ResponseEntity<?> Download(String type, String category){
	try{
		return new ResponseEntity<>("성공", HttpStatus.OK);
	}catch(NullPointerException e){
		return new ResponseEntity<>("데이터가 없습니다.", HttpStatus.SERVICE_UNAVAILABLE);
	}	
}
반응형

+ Recent posts