나의 호기심

HttpHeaders는 MultiValueMap의 구현체이다?

chaeyoung- 2023. 7. 11. 10:53

 

 

카카오 REST API를 활용하여 회원가입 하는 기능을 학습했습니다.

 

카카오 서버로 부터 인증 코드를 요청하고, 인증 코드를 전달받아서 인증 코드를 통해 토큰을 요청하고, 전달 받은 토큰으로 사용자 정보를 가져오는 코드에서 HTTP API Method가 post로 작성되어 있었습니다.

 

 

해당 http 요청이 post가 아니라 Get 방식이 맞지 않을까?

에 대해서 토론을 하고, 질문을 했습니다.

 

코드는 아래과 같습니다.

        RequestEntity<MultiValueMap<String, String>> requestEntity = RequestEntity
                .post(uri)
                .headers(headers)
                .body(new LinkedMultiValueMap<>());

 

 

그러던 중

MultiValueMap은 Map의 구현체 중의 하나이고, 중복된 키값을 허용한다는 특징을 발견했습니다.

LinkedMultiValueMap는 순서를 보장하는 구현체임을 알아냈습니다.

또한, 이 두개는 모두 스프링 내부의 Interface로 자바에서는 사용할 수 없습니다.

 

 

 

같이 공부를 하는 수연님과 이야기를 나누던 중에 HttpHeaders 가 MultiValueMap의 구현체라는 것을 알았다.