728x90
반응형
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 를 추가해야지만 값이 전송 된다.
728x90
반응형
'Java > Spring' 카테고리의 다른 글
파라미터에 따라 특정 변수에 값 Set 하기 (0) | 2018.10.24 |
---|---|
JPA QueryDsl 에서 Group By Count 값 가져오기 (0) | 2018.09.28 |
Jackson ObjectMapper에서 json data를 Map이 아니라 Object로 받기 (0) | 2018.09.12 |
[삽질] stomp, sockjs를 이용하여 websocket 연결 시 info 가 404로 나오는 경우 (4) | 2018.03.13 |
이미지 파일 업로드 오류 수정 기록... (0) | 2016.11.08 |