본문 바로가기

흔한생각 (recording)/Dynamo

다이나모로 공공데이터 API 활용하기

300x250

다이나모에서도 공공데이터 API를 조회해서 활용할 수 있다는 걸 아시나요?
공공데이터포털을 검색해서 들어가보면 엄청나게 많은 범주의 데이터들을 OpenAPI 로 조회할 수 있습니다.
이번 글에서는 누구나 자료구조를 이해하기 쉬운 영화인API를 통해서 다이나모로 API를 조회한 후 값을 가져오는 연습을 해보겠습니다. 건축과 밀접하게 관련된 분야의 API를 다루고 다양하게 응용하는 것은 이번 튜토리얼을 마치고 추후 다시 포스팅할 예정입니다.

영화진흥위원회 오픈API 얻기

API 홈페이지 찾아가기

영화진흥위원회 오픈API
위의 링크로 들어가면 영화진흥위원회의 API사이트로 이동이 가능합니다.

키 발급 받기

API를 사용한다는 것은, 정보제공자의 서버에 올려진 데이터에 우리가 정보조회를 요청해서 값을 얻어내는 형식입니다. 무제한으로 접속이 허용되지 않기에 정해진 절차를 밟으면 접근할 수 있게 되어 있습니다. 먼저 로그인 버튼을 한번 눌러볼까요?

회원가입이 되어있지 않으면 적색 점선 안의 회원가입 버튼을 눌러 가입하면 됩니다.

회원가입 후 로그인까지 하고 나면, 상단에 키 발급/관리 라는 버튼을 눌러봅니다.

키 발급/관리 페이지가 뜨네요. 당연히도 사용현황에는 아무것도 안 떠있습니다.

키 발급받기 버튼을 누릅니다. 데이터에 접근하는 주체들을 관리하기 위한 최소한의 절차로 이해하시면 좋을 것 같습니다.

사용목적과 관리명을 본인의 목적에 맞게 적어주고 키 발급 버튼을 누릅니다.

청색 모자이크로 된 부분이 발급키가 되는 부분입니다! 저 부분이 있어야 데이터를 받아올 수 있으니 잘 저장해 두셔야 합니다.
그런데 아직 API를 뭘 어떻게 해야하는지는 잘 모릅니다.

홈페이지의 OPEN API 메뉴로 가서 제공서비스를 누르면 개괄적인 설명을 확인할 수 있습니다.

요청 URL 확인 및 인터페이스 확인

우리는 영화인 목록을 조회해 볼 예정이므로 좌측 서비스 중 영화인목록을 클릭하면 설명페이지가 등장합니다.

방식은 2가지 방식이 있다고 나오는데, 일단 우리는 REST 방식으로만 해보겠습니다.
인터넷 식별자(URI)와 HTTP 프로토콜 기반이기 때문에 우리가 상대적으로 쉽게 배울 수 있습니다.
우리는 기본요청의 URL에서 마지막의 .xml 부분을 .json으로 바꿔서 적용한다는 것만 기억해 주세요.

API 주소로 접근해 데이터 수신해보기(by Web Browser)

이제 다이나모를 켜고 새파일을 열어줍니다!
그리고 나서 간단한 이해를 위해 인터넷브라우저를 열어줍니다.

그리고 나서 “http://kobis.or.kr/kobisopenapi/webservice/rest/people/searchPeopleList.json” 를 주소창에 입력해봅시다. API의 주소입니다. 설명페이지에 나와있죠?
입력하고 나면 위 그림처럼 “유효하지않은 키값입니다.”라고 에러메세지가 뜹니다.
당연하니까 당황하실 필요 없습니다. 아까 발급받은 key 값을 이때 활용하면 되거든요.

URL 뒤쪽에 ?key= 이라고 적고, 그 뒤에 아까 발급받은 key값을 복사해서 집어넣은 후 엔터를 누르면 위와 같은 화면이 뜹니다! 뭔가 데이터가 호출되어 브라우저에 나타난 것이 보이죠?
여러가지 궁금한 점이 많겠지만 일단은 api주소와 key 값을 조합하여 server에 요청을 보냈더니, 그 답례로 데이터가 회신되었다! 라고 이해하시면 될 것 같습니다.

API 주소로 접근해 데이터 수신해보기(by Dynamo - Web Request Node)

이것과 똑같은 작업을 다이나모에서도 할 수 있습니다!! 일단 빈 캔버스에 더블클릭으로 코드블럭을 소환하시고, 거기에 API주소를 적어둡시다.

아까 요청을 보냈더니 데이터가 회신됬다고 했지요? 요청은 영어로 request니까 다이나모의 좌측 Library 검색 창에서 request를 검색해 봅니다.
Web Request라는, 아주 적절해 보이는 노드가 하나 뜹니다. 눌러서 배치해 볼까요?

친절하게 input Port에 “url”이라고 적혀있으니까 아까 적어둔 API url을 연결해 줍니다. 노드아래쪽 데이터 버블을 열어서 확인해 보니, 아까 키값이 없이 api 에 브라우저로 접근했을 때와 같은 메세지가 뜹니다. “유효하지않은 키값입니다.”

다이나모에 익숙하지 않은 분들은 일단은 따라하기만 해보시기 바랍니다. 키값을 포함한 전체 요청 주소를 완성하기 위해서는 위와 같이 코드를 짜면 됩니다.
이렇게 분리해서 url을 완성시키는 이유는 추후 이 파일을 다른 사람이 이용하거나, 키값이 변경되는 경우, 수월하게 대응할 수 있도록 하기 위해서 입니다.

Web Request 노드를 다시 연결해보면 데이터가 잘 들어온 것을 확인할 수 있습니다.
이걸로 서버로 요청을 보내 데이터를 받아오는 데 성공했네요! 이걸로 끝내면 아쉬우니, 배우 박중훈님의 필모그래피를 API로 한번 검색해 보도록 하겠습니다.

아까 설명페이지에서 보면 요청 인터페이스라는 항목이 있었죠? 여기 써있는 내용이 우리가 API에게 질문할 수 있는 명령어 목록입니다. 사람이름으로 찾아보고 싶으니 우리는 “peopleNm” 을 이용하면 되겠네요.
질문하는 방법은 url 주소 뒤에 &을 붙이고, peopleNm= 이라는 질문을 쓴 뒤, 찾고 싶은 이름을 입력하면 됩니다.

완성된 코드는 이와 같습니다. 직접 하나씩 배치하면서 따라해 보세요.
꼭 따라해보시면 금새 익숙해지실거에요.

Web Request 노드가 받아온 Data의 형식은 json이라는 형식의 데이터인데, 다이나모에서 json데이터를 조작하고 활용하려면 Parse라는 단계를 거쳐야 합니다.
우리는 간편하게 Data.ParseJSON 라는 노드를 이어주기만 하면 끝납니다.
Parse된 결과를 보니 검색된 데이터는 2건이고, 한 명은 우리가 잘 아는 배우 박중훈 씨, 그리고 나머지 한명은 소품팀의 동명이인인 박중훈씨에 대한 결과가 나오는 군요.

API를 활용하는 방법은 무궁무진하고, Python 노드를 활용하여 다루기 시작하면, 훨씬 다양하고 효과적인 방법으로 API 데이터를 받아와서 조작한 뒤 내가 원하는 어플리케이션을 만드는 데 사용할 수 있습니다!!! 더 자세한 글은 나중에 쓰겠습니다!!!

반응형