본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/spring

[Spring] 간단하게 HTTP POST 요청하기

by 미노드 2021. 9. 30.

 POST 요청이란?

서버에 요청하는 방식
클라이언트가 서버에 요청을 할 때 제공해야하는 자원이 있을 때 
Get방식은 요청하는 자원을 URL에 뒤에 보내는 반면
POST방식은 URL에 붙이지 않고 따로 데이터(Body)를 만들어 보낸다.

 Spring Framework에서 POST 요청 하기 

1. body 만들기

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

MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add('')

MultiValueMap 타입으로 만들어준 변수에 add()를 사용해 보낼 데이터를 추가해준다.

2. Header 만들기

HTTP POST를 요청할때 보내는 데이터(Body)를 설명해주는 헤더(Header)도 만들어서 같이 보내줘야 한다.

HttpHeaders headers = new HttpHeaders();
headers.add("");

Spring Framework에서 제공해주는 HttpHeaders 클래스는 Header를 만들어준다.

add()를 사용해 Header에 들어갈 내용을 추가해주자.

3. 요청을 위해 헤더(Header)와 데이터(body) 합치기
HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(params, headers);

Spring Framework에서 제공해주는 HttpEntity 클래스는 Header와 Body를 합쳐준다.

4. POST 요청해보기
RestTemplate rt = new RestTemplate();

ResponseEntity<String> response = rt.exchange(
                "https://{요청할 서버 주소}", //{요청할 서버 주소}
                HttpMethod.POST, //{요청할 방식}
                entity, // {요청할 때 보낼 데이터}
                String.class {요청시 반환되는 데이터 타입}
);

 

Spring Framework에서는 서버에 요청을 편하게 하기 위한 RestTemplate 클래스를 제공해준다.
response에 서버에서 응답해준 데이터가 저장될 것이다.

※ RestTemplate란?
HTTP 메소드에 의한 평범한 기능 템플릿을 제공해주고, 더 나아가 특별한 케이스를 지원하는 exchange와 execute 메소드를 제공해준다.
exchage() : 모든 HTTP 요청 메소드를 지원하며 원하는 서버에 요청시켜주는 메소드