[API]항공정보 가져오기[DTO, Gson]
Programming

[API]항공정보 가져오기[DTO, Gson]

목차

- 오픈 API

- 오픈 API 받아오기

- DTO 생성

- Gson 사용하여 json을 java object로 변환


 

https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15000755 

 

국토교통부_국내항공운항정보

국내 항공운항정보에 대해 항공기정보, 항공사정보, 운임정보 등을 조회할 수 있다. 항공운항정보는 항공운항정보 목록, 공항목록, 항공사 목록조회가 가능하다.

www.data.go.kr

 

 

샘플 코드를 가져옵니다.

 

 

필수 값은 무조건 넣어야 하지만

 

필수 값이 아닌 것은 넣지 않아도 됩니다.

 

예를 들면 항공사라던지

 

 

가져온 코드

 

인증키 %3D

Eecoding 된 것을 넣어줍니다. 

아래에 주석 처리된 것은 사용하지 않는 기능을 주석 처리한 것입니다.

 

이렇게 하고 컨트롤러에서

Exception 처리를 해주고 실행시켜주면

 

 

잘 동작합니다.

 

잘 받아진 모습

 

 

*

이런 것은 계속 요청을 하게 되면 부하가 심하기 때문에

개인 서버로 데이터를 받아서 개인 서버에 클라이언트가 접속하도록 합니다

*

 

 

아래와 같이 보여주게 되는데

불편합니다.

 

 

json 객체로 받아오게 다음과 같이 url뒤에 추가해줍니다.

 

url추가를 위해서 한 줄을 추가해줍니다.

 

 

 

이제 json 오브젝트를 자바 오브젝트로 파싱 해봅니다

 

 

returnString으로 하게 해서 이것을 Java class로 파싱 해봅니다.

그러기 위해서 DTO를 만들어서 이 json 데이터를 받아옵니다.

 

 

Sysout 된 것을 복붙 한 것입니다

 

 

이런 식으로 요소를 분석해서 DTO를 구성하는 클래스를 만들어줍니다.

 

 

 

 

 

 

 

 

또 다른 편한 방법으로는 jsonschema2pojo 사이트에 가서

아까 받아온 한 줄을 붙여 넣기 해보는 방법이 있습니다.

 

이렇게 하면 편하게 자동적으로 만들어줍니다.

 

https://www.jsonschema2pojo.org/

 

jsonschema2pojo

Reference properties For each property present in the 'properties' definition, we add a property to a given Java class according to the JavaBeans spec. A private field is added to the parent class, along with accompanying accessor methods (getter and sette

www.jsonschema2pojo.org

 

이제 이것을 사용해서 만들어줍니다.

 

 

 

 

전체를 복사해서 DTO class에 넣어줍니다.

 

 

총 200줄이네요

 

넣어주고 중간중간에 여러 줄이나, public으로 된 것을 지워줍니다.

import도 중복된 것도 지워주고요.

 

이렇게만 하면 DTO가 완성입니다.

 

 

 

공공데이터를 쓸 때 DB에 어느 정도 가져올지 생각을 해야 합니다.

 

 

 

이제 Dto를 만들었고

구글에서 나온 gson을 사용해서 json 데이터를 java object로 변환해봅시다.

 

 

 

pom.xml에 추가

 

 

 

추가한 Gson을 사용해봅시다.

 

Gson 객체의 인스턴스인 gson을 만들고

 

gson안에 있는 여러 메서드 중에

json 객체를 자바 object로 변환해서 AirportDto 타입인 airportDto에 넣어줍니다.

(resultAirportDto형태로 만들어줍니다)

 

 

위에 return 데이터로 String으로 되어있는데

AirportDto로 바꿔줍니다.

 

완성된 모습

 

 

또 다르게 저렇게 보고 싶은 데이터를 분석해서 저것만 보여주게 할 수도 있습니다.

 

 


 

 

 

 

'Programming' 카테고리의 다른 글

[JavaScript]JS for Springboot[자바스크립트 정리]  (0) 2021.07.20
[API,SDK]Sms Service 구현  (1) 2021.07.12