코드로 살펴보는 Open API 프로그래밍과 매쉬업 준비하기

다음과 네이버가 함께하는 첫 번째 매쉬업 캠프가 성공리에 진행되었다고 합니다. 국내 개발자들의 Open API와 매쉬업에 대한 높은 관심을 보여준 행사라 할 수 있습니다. 그렇다면 매쉬업 서비스를 개발하고자 한다면 무엇부터 시작해야 할까요? 바로 Open API에 대한 이해와 이를 활용한 프로그래밍이라 할 수 있습니다.
 
이전 포스트를 통해 국내 Open API의 현황과 필요성에 대한 이야기를 하였습니다. Open API에 대해 이해하였다면 그 다음으로 사용하고자 하는 Open API가 어떻게 정의되어 있고, 동작하는지 확인하여야 합니다. 이전 포스트에서 소개한 네이버, 다음, 알라딘의 Open API를 이용하는 책 검색 페이지를 통해 하나씩 살펴보도록 하겠습니다.
 
Open API를 이용한 개발 순서는 다음과 같습니다.
1) Open API 확인: Open API는 해당 서비스 제공자마다 모두 다릅니다. Open API를 제공하는 서비스 사이트를 찾아 자신에게 적합한 API를 확인하여야 합니다. 대부분 예제 페이지를 제공하기 때문에 직접 실행 결과를 확인해 보시기 바랍니다. 이번 예제에서는 책 검색 API를 사용하였습니다.
 
2) 서비스별 인증키 발급: 대부분의 Open API 서비스 제공 업체들은 자사 서비스에 대한 사용자 관리를 위해 인증키를 부여하고 있습니다. 더불어 이 인증키를 기준으로 하루에 실행할 수 있는 쿼리수를 제한하기도 합니다. 다음과 네이버의 경우 일반적인 하루 쿼리 수는 5,000회로 제한되어 있는데 이 인증키가 그 식별의 역할을 하고 있습니다. 또한 인증키가 있어야만 Open API가 실행되니 각 서비스 사이트에서 해당 정보를 확인한 후 인증키를 발급받으시기 바랍니다.
 
3) Open API 스펙 확인: Open API를 제공하는 업체마다 데이터의 커스텀 네임스페이스(Namespace)를 정의하고 있습니다. RSS 스펙에 없는 필드에 대해서는 업체별로 이름 정의가 다르기 때문에 코드 작성 이전에 미리 확인해야 합니다. 유사한 Open API라고 할지라도 특정 필드에 대해서는 데이터가 제공되지 않는 경우와 동일한 데이터이지만 필드 이름이 다른 경우가 있습니다. 그러므로 각 서비스 업체가 제공하는 스펙을 확인하고, 그에 맞는 이름을 사용하여야 합니다.
 
4) 구현 및 테스트: 실제 코드를 작성하는 단계입니다. 대부분의 Open API가 RSS, XML, JSON과 같은 XML 기반의 데이터 형식으로 출력하고 있습니다. 어떤 언어를 사용하여도 무방하나 XML과 RSS 스펙에 대한 기본 지식은 가지고 작업하는 것이 필요합니다. 이런 과정을 거쳐 코드 작성이 완료되었다면 해당 Open API는 그에 적합한 데이터를 출력하고, 화면을 통해 실행 결과를 확인할 수 있습니다.
 
그럼 실제 코드를 한번 살펴보도록 하겠습니다. 이번 예제는 ASP.NET과 C# 언어로 작성해 보았습니다. 어떠한 언어를 사용해도 무방하니 전체 코드 흐름을 이해하는데 참고하시기 바랍니다.
 
네이버, 다음, 알라딘에서 공통적으로 사용할 수 있는 출력 포맷은 RSS입니다. 이를 위해 RSS 출력 결과를 수집하는 코드를 작성하였으며, 추후 매쉬업 활용을 위해 단순 데이터 출력이 아닌 각 항목(Item)을 클래스로 정의하여 컬렉션(Collection) 형식으로 저장하고 있습니다. RSS 수집과 관련된 주요 함수는 다음과 같습니다.

 
RssChannel은 RSS의 헤더부분인 <channel> 노드 저장을 위한 클래스이며, RssItem은 RSS의 반복되는 <item> 노드 저장을 위한 클래스입니다. LoadFromUrl() 함수를 통해 Open API를 호출하고, PopulateRssData() 함수를 통해 각 데이터를 해당 클래스의 인스턴스에 저장합니다.
 
화면 구성을 위해 사용한 주요 함수들은 다음과 같습니다. 
 
 
네이버 책 검색 페이지의 코드입니다. 앞서 소개한 인증키를 key 변수에 정확하게 입력하여야만 Open API가 동작하니 주의하시기 바랍니다. searchUrl은 Open API 호출을 위한 URL로 서비스마다 별도 URL을 제공하고 있습니다. 각 API별로 호출 URL이 다를 수 있으니 사전에 꼭 확인해야 하는 항목입니다. 이외의 다른 코드들은 다음과 알라딘의 예제와 동일합니다.
 
네이버 책 검색 – [실행하기] [소스코드다운로드]
다음 책 검색    – [실행하기] [소스코드다운로드]
알라딘 책 검색 – [실행하기] [소스코드다운로드]
 
이렇게 하여 Open API를 사용하여 실제 코드를 작성하는 과정까지 살펴보았습니다. 이제 매쉬업 서비스 개발을 위한 첫 걸음을 시작하였습니다. 이번 예제와 같이 Open API 하나를 단순히 이용하는 서비스를 매쉬업이라고 이야기하기에는 조금 무리가 있습니다. 진정한 의미의 매쉬업이란 Open API에서 제공하는 데이터와 자신의 아이디어를 결합하여 새로운 서비스 모델을 만들어 내는 것입니다.
 
다음 포스팅에서는 실제 매쉬업 서비스 개발을 위해 2개 이상의 Open API를 섞어서 새로운 페이지를 만들어 보겠습니다. 네이버의 실시간 인기 검색어 API와 다음의 여러 검색 API를 활용하는 모델이 될 것입니다.
 
Open API와 매쉬업은 서비스 제공자와 개발자 모두에게 큰 의미를 제공합니다. 개발 자체도 물론 중요하지만 그 뒤에 숨은 정보 공유와 서비스 제공자를 중심으로 한 새로운 인터넷 생태계가 생성된다는 의미를 다시 한번 새겨 보시기 바랍니다.
 
참고. Windows XP Professional 이상 버전에서 IIS 6.0과 .NET Framework 2.0이 설치되어 있다면 이번 예제를 바로 실행할 수 있습니다. 이번 예제 소스코드는 CC 라이선스에 따라서 사용할 수 있습니다.
스마트플레이스의 글을 편리하게 구독하세요. 한RSS 추가 구글추가
크리에이티브 커먼즈 라이센스
Creative Commons License이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

트랙백 (3) | 덧글 (10)
트랙백 주소: http://www.smartplace.kr/trackback_post_114.aspx
스마트플레이스의 트랙백은 스팸방지를 위해 관리자 승인 후 등록됩니다.
스마트플레이스 2007-02-27 14:20:29
다음과 네이버의 매쉬업 경진대회와 우리의 Open API
다음커뮤니케이션과 NHN이 공동으로
스마트플레이스 2007-02-27 14:20:56
정체되어 있는 Open API와 Mashup 서비스
웹 2.0 개발의 새로운 모델로 Open API와 Mashup을 자주 이야기합니다. 최근 Mashup 서비스는 일반 브라우저 환경을 떠나 모바일과 다양한 디바이스로 서비스를 확대하고 있습니다. 국내에서도 이미 네이버 와 다음 과 같은 포털 사이트에서 Open API를 공개하였고, 이들을 이용한 Mashup 서비스들이 조금씩 소개되고 있습니다. Web2.....
Channy's Blog 2007-02-27 14:50:39
가능성 확인한 매쉬업 캠프!
지난 2월 25일(일)에 연세대 상남경영원에서 매쉬업 캠프 행사가 열렸습니다. 매쉬업 경진대회 부속행사이긴 하지만 국내에서는 처음으로 오픈 API에 대한 소개와 매쉬업에 대한 이야기를 공...

kkongchi 2007-02-27 17:54:56     답글 삭제
작성하시느라 수고하셨습니다..^^ 좋은 코드와 글 잘 보고 갑니다..
네오비스 2007-02-27 23:13:09     삭제
덧글 감사합니다. 다음번 포스팅에서는 보다 유용한 코드를 만들어 보도록 하겠습니다. ^^

leewin12 2007-02-28 00:35:52     답글 삭제
관심있던 부분인데, 접근하지 못하고 있었습니다.
좋은 코드 진심으로 감사드리고 열심히 공부해야겠네요 하핫;
네오비스 2007-02-28 00:45:44     삭제
도움이 될 수 있다면 좋겠습니다. 다음번 글도 참고해 보시기 바랍니다. 덧글 감사합니다. ^^

choong 2007-02-28 06:29:44     답글 삭제
제가 짠 소스랑 비슷합니다.. 이런 ㅠ_ㅠ
태오님 싸이트에서 RSS Reader 참조해서 만들었는데..
클래스를 따로 쪼갠거 빼고는 거의 비슷한거 같습니다. ^^
저는 Update Panel 가져다 놓고 안깜빡이게 한거 빼고는요..

좋은 글 잘 보고 갑니다. ^^
네오비스 2007-02-28 12:48:34     삭제
Open API가 RSS나 비슷한 구조를 가지고 있기 때문일 것입니다. 주석에서 레퍼런스를 밝혀두었답니다. 다음에 기회되면 choong님 코드도 공개해 주세요. ^^ 덧글 감사합니다~

onemins 2007-02-28 15:04:00     답글 삭제
너무나 흥미로운 정보 감사합니다...
열심히 공부하면서 보겠습니다...
네오비스 2007-02-28 15:05:53     삭제
도움이 되신다니 다행입니다. 그럼 열공! 하십시오. 덧글 감사합니다. ^^

fico score 2011-11-09 03:34:32     답글 삭제
코딩은 내가 분명히 어떤 재능을 가지고 있지 않다는 걸 일이 많은 것입니다. 내가 프로그래머가 부러워. 적어도 우리가 코딩 항아리에 우리에게 큰 도움이 있어요.
How to Learn French Fast 2011-12-30 00:07:11     삭제
소스 코드를 제공 주셔서 대단히 감사합니다. 내 프로젝트에이 문제와 붙어있을 거라는 걸 생각.

이름 비밀번호
홈페이지
덧글
비밀글
RSS 피드
전체글한RSS 추가 구글추가
스마트가젯북스타일
Demo Day