http로 값을 전송 하면서 보통 GET, POST를 많이 쓰고 PUT 으로는 전송을 잘 안하게 되는데, PUT으로 받아야 하는 API를 만들다가 값이 잘 전송이 안된다는 것을 알게 되었고, 이럴 때 어떻게 값을 전송해야 하는지 삽질의 결과물을 남겨 둔다.

 

보통 postman을 사용하여 값을 전송하는데 POST일 경우에는 body의 Typ을 form-data 또는 raw를 하게 된다.

PUT일 경우에도 form-data 로 전송하니 값을 받을 수 없어서 이리 저리 확인해 보니

PUT일 경우에는 다음과 같이 전송 해야 한다.

 

 

 

이와 마찬가지로 Spring에서 RestTemplate를 이용하여 PUT 파라미터를 전송하게 될 경우 아래와 같이 하여야 한다.

MultiValueMap<String, String> body = new LinkedMultiValueMap<>();
body.add("reservePhone", phoneNumber);

HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

HttpEntity<?> httpEntity = new HttpEntity<>(body, httpHeaders);

ResponseEntity<String> responseEntity = restTemplate.exchange(apiUrl, HttpMethod.PUT, httpEntity, String.class);

 

 

위와 같이 header에 MediaType.APPLICATION_FORM_URLENCODED 를 추가해야지만 값이 전송 된다.




WRITTEN BY
체리필터
프로그램 그리고 인생...

트랙백  0 , 댓글  0개가 달렸습니다.
secret