스프링 부트, 스프링 api 값 사용하는법(RestTemplate, ObjectMapper 사용법, api값 객체로 받기)

작성자 : 조회수 :

향후 프로젝트를 위해서 RestTemplate을 이용한 API 사용법을 정리하는 게 좋을 것 같다는 생각이 들었습니다.

 

json값을 받은 후 가공을 위해 객체로 받아내려 합니다.

 

컨트롤 단에서 api 요청 후 값을 받아 오도록 해보자.

 

먼저 요청 api url을 넣습니다.


String getApiurl = “APIURL  넣으세요


ResponseEntity<String> responseEntity =
        restTemplate.
exchange(getApiurl ,
               
HttpMethod.GET, null , String.class);



사실 여기서 중요한 건 다른 설명 글들은 exchange의 중요한 사용법을 적어주셨지만

 

일단 저는 값을 가져오는 과정이니 (나중에 따로 올리겠습니다!)

 

저는 해당 api가 특별한 요구사항 없이 url만 있다면 반환해주는 것을 보고 requestEntity 부분은 일단

 

null값을 넣었습니다.

 

exchange라는 메소드가 받는 값은

 

1.     Api url

2.     HTTP 메소드가 어떤 것인지

3.     RequestEntity가 무엇인지

4.     그리고 받아올 때는 어떤 타입으로 받아올지

 

4가지가 됩니다.

올바르게 받아왔다면 아래와 같이 getBody를 통해 받은 값의 body값을 확인하면

 

json값을 확인해볼수 있습니다

 

아래 사진은 나중에 설명드리겠습니다.




일단 샘플데이터에 맞춰 객체를 만들어줘야 합니다.

 

 

저는 아래 사이트를 이용했습니다.

https://www.jsonschema2pojo.org/


이런 사이트도 있으니깐 참고해주세요!

https://json2csharp.com/json-to-pojo

 

jsonschema2pojo

json, yaml 파일들을 자바 객체에 맞춰 코드를 짜주는 사이트 입니다.

 

적은 필드 값들이라면 상관없겠지만 제가 이번에 받을 데이터처럼 필드가 너무 많을 때는

 

이처럼 알아서 만들어 주는 것이 좀더 생산성이 높아집니다!




위의 사진을 본다면 알겠지만 자바 객체 개념으로 친다면

 

너무 많은 필드 값들이 있습니다.

 

그래서 위의 사이트를 이용했습니다.





먼저 받은 json을 전부다 받아올 필요 없이, json 값을 객체로 받아올 전체적 틀만 복사해서

 

붙여 넣기 해준 다음  preview 해줍니다.



사진과 같이 자바 객체로 자동 변환 해준 것을 볼 수 있습니다.

 

저기서 나온 자바 객체를 필요한 부분만 가져와서 복사해 가져와 주면 됩니다.

 

이렇게 아래 사진처럼 가져오면 되는데 




저는 이상하게도 objectMapper를 사용할 때만 lombok이 작동하지 않아서

getter, setter, 빈생성자, 생성자 까지 전부 코드로 넣었습니다.



여기서 매우 주의 해야 할 점은 대소문자를 따지니 꼭 변수명과 맞춰야 합니다.



아니면 사진처럼 대소문자를 가리지 않도록 하는 설정을 넣어주면 되지만

 

취소 선이 그어져 있는 것을 볼 수 있다. 별로 추천하지 않으며 사용되지 않는다 라는 뜻이다.

 

따라서 그냥 대소구분 없는 설정 말고 딱 맞춰줘야 하는데

 

일단 저는 위의 설정을 사용했습니다.



ObjectMapper objectMapper =

new ObjectMapper().configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES,true);


 

RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> responseEntity =
        restTemplate.
exchange(getApiurl ,
               
HttpMethod.GET, null , String.class);


설정을 마치면 아래 사진처럼

 

ObjectMapper를 통해 json으로 들어온 String 값을 자바 객체화 시켜줍니다





결과




정리하자면

 

1.     특정 Api 사용 -> json 값을 받아옴

 

2.     json 값을 보고 미리 자바프로젝트에서 객체로 만들어 놔야 함 (https://www.jsonschema2pojo.org/ 사용)

 

3.     objectmapper를 통해서 json -> 미리 만든 자바 객체 둘을 매핑 시켜 값을 받아냄

 

4.     DB로 저장하거나 아니면 자유롭게 자바 객체로 사용하면 됨




아직 이글은 작성중입니다.


수정사항 있을 수 있습니다!