본문 바로가기

Mashup.OpenAPI

Openapi 를 이용한 이미지 슬라이드


작년 매쉬업 대회 준비하면서 올린 파일인데, 오랜만에 보니 새롭게 느껴 지네요. 곧 매쉬업 대회 일정도 시작할것 같은데, Flash 로 매쉬업을 준비하시는 분들은 참고 하시기 바랍니다.   

오픈 API란 무엇인가요?

오픈 API(OpenAPI)란 자사의 API를 외부에 공개한 것으로 일반적으로 웹 서비스(Web Services)형태로 공개한 것을 말합니다. 위키피디어에서는 API를 "응용 프로그램에서 사용할 수 있도록 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있도록 만든 인터페이스"로 정의하고 있습니다.

즉, 원래는 운영체제나 언어가 제공하는 기능을 제어할 수 있는 인터페이스였으나 이를 웹서비스에서는 특정 서비스를 이용할 수 있는 인터페이스를 API라 지칭하였습니다. 또한 이것을 외부에서 사용할 수 있도록 공개한것이 오픈 API며, 웹 서비스의 개방지향적인 성격을 잘 나타내고 있습니다. 일반적으로 오픈 서비스 API, 웹 서비스 API등의 용어와 혼용하여 비슷한 의미로 사용되고 있습니다.  

이런 것이지요? ㅎㅎ 대표적으로 한국에서는 다음, 네이버, 옥션, 야후 등이 서비스를 하고 있습니다.  

 
  1. package yahweh.openapi
  2. {
  3.         import flash.system.System;
  4.         import flash.display.*;
  5.         import flash.events.*;
  6.         import flash.net.*;
  7.         import flash.xml.*;
  8.        
  9.                
  10.         public class ImageLoader extends EventDispatcher{
  11.                 private var mInfo:Object;// OpenAPI 를 쓰기 위한 준비 내용이 들어 있다.
  12.                 private var xmlInfo:Object;
  13.                 public var outXMLdata:XML;
  14.                        
  15.                 // constructor
  16.                 public function ImageLoader():void {// 초기화 시킨다.
  17.                                        
  18.                         mInfo={apiURL:"http://openapi.naver.com/search?target=image",
  19.                                         apiKey:"",          // 자신의 네이버 APIKEY 를 입력
  20.                                         query:"",
  21.                                         displayNum:10};
  22.                        
  23.                 }
  24.                
  25.                 // main function
  26.                 public function main_loadPage(_page:Number,_query:String):void {// 메인 페이지가 로드 될때 불러와 진다.
  27.                         var page = _page + 1;
  28.                         api_load(_query,page,mInfo.displayNum);
  29.  
  30.                 }
  31.                
  32.                 // API load function
  33.                 private function api_load(_query:String,_page:Number,_displayNum:Number):void {
  34.                         System.useCodePage = false;
  35.                         var page = _page*_displayNum;
  36.                         var loader:URLLoader=new URLLoader  ;
  37.                         loader.addEventListener(Event.COMPLETE,api_loadComplete);
  38.                         loader.addEventListener(IOErrorEvent.IO_ERROR,api_loadError);
  39.                         var requestURL=mInfo.apiURL + "&key=" + mInfo.apiKey + "&query=" +encodeURI(_query) + "&start=" + page + "&display=" + _displayNum;
  40.                         trace("requestURL = " + requestURL);
  41.                         var request:URLRequest=new URLRequest(requestURL);
  42.                         loader.load(request);
  43.                         //
  44.  
  45.                 }
  46.                 private function api_loadComplete(event:Event):void {
  47.                        
  48.                         trace("api load complete");
  49.                         var loader:URLLoader=URLLoader(event.target);
  50.                         var dataXML=new XML(loader.data);
  51.                         outXMLdata = dataXML;
  52.                         trace(dataXML);
  53.                         dispatchEvent(new Event(Event.COMPLETE));
  54.                         // 컨테이너에 연결 시킨다.
  55.                        
  56.                 }
  57.                 private function api_loadError(error:IOErrorEvent):void {
  58.                         trace("api load error");
  59.                                                
  60.                 }
  61.                                
  62.         }// End Class
  63. }

 

쿼리를 날리는 as 파일입니다. 제 api 키가 들어 있으니;; 무한 실행은 하지 마시고요;;

swf 를 올리니깐 인터넷상이라 그런지 이미지가 실시간으로 안불러와 지더군요. 소스 올릴테니 참고하세요.