본문 바로가기
IT/Spring

[Spring] - 스프링 HttpEntity, HttpHeaders 클래스 MultiValueMap, LinkedMultiValueMap, RestTemplate 사용 방법

by 차이나는 개발자 2022. 6. 28.
728x90
반응형

#스프링 HttpEntity, HttpHeaders  클래스 MultiValueMap, LinkedMultiValueMap, RestTemplate 사용 방법

 

 

#HTTP요청시 Get방식은 요청하는 자원을 URL에 뒤에 보내는 반면 POST방식은 URL에 붙이지 않고 따로 본문 데이터(Body)를 만들어 보냅니다.

 

 

1.HTTP 헤더(Header)를 생성합니다.

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("header-key", "HttpHeaders");

 

 

2.HTTP 본문(Body)를 생성합니다.

-MultiValueMap = 일반적인 HashMap과 다르게 키의 중복이 허용됩니다.

-LinkedMultiValueMap = Linked가 붙으면 순서가 보장됩니다.

-Body는 보통 key, value의 쌍으로 이루어지기 때문에 자바에서 제공해주는 MultiValueMap 타입을 사용해야합니다.

MultiValueMap<String, String> bodys = new LinkedMultiValueMap<>();
bodys.add("client_id", "kakaoApiId");
bodys.add("code", "CA007");

 

 

3.HTTP 요청을 하기위해 HTTP 헤더(Header)와 HTTP 본문(Body)을 HttpEntity 생성자의 파라미터로 전달하여 HttpEntity를 생성합니다.

-doc) HttpEntity(T body, MultiValueMap<String,String> headers)

HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(bodys, headers);

 

 

4.스프링에서 제공하는 RestTemplate 클래스를 사용해서 HTTP 요청을 보냅니다.

-doc) exchange(URI url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType)

URI uri = UriComponentsBuilder
        .fromUriString("http://localhost:8080")
        .path("/api/server/postApiTest")
        .build()
        .toUri();

RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> responseEntity = restTemplate.exchange(
        uri, 
        HttpMethod.POST,
        entity, 
        String.class
);

 

 

 

728x90
반응형

댓글