위젯/가젯 API는 다른 웹서버들과 웹페이지들로부터 콘텐츠를 원격으로 가져오고, 사용할 수 있습니다.
원격 웹 콘텐츠 탐색과 활용을 위해 makeRequest(url, callback, opt_params) 함수를 제공합니다.
String url : 콘텐츠가 위치한 원격 URL
Function callback : 지정한 URL로부터 가져온 데이터를 호출하기 위한 함수
Map opt_params : request를 보낼 때 추가하는 파라미터
opt_params에는 다음과 같은 내용 포함될 수 있습니다.
콘텐츠 타입 : TEXT, XML, JSON 사용 가능 (gadgets.io.RequestParameters.CONTENT_TYPE)
메쏘드 타입 : POST 또는 GET (gadgets.io.RequestParameters.METHOD)
request와 같이 보낼 헤더 정보 (gadgets.io.RequestParameters.HEADERS)
인증방식 : NONE, SIGNED 사용 가능 (gadgets.io.RequestParameters.AUTHORIZATION)
makeRequest()를 호출하면 다음과 같은 공통 특성을 가집니다.
첫번째 파라미터인 url은 원격 콘텐츠를 가져오기 위해 사용된다.
두번째 파라미터인 callback 함수는 반환된 데이터를 처리하기 위해 사용된다.
비동기적이고, 콜백 함수안에서 일어나야만 하는 전 과정을 포함한다. 콜백은 파라미터로서 다른 함수에 전달될 수 있는 함수입니다. 콜백은 제 3의 개발자들에게 기존에 구동중인 프레임웍에 특정 처리를 hook 할 수 있도록 제공한다.
즉시 반환되어야 하기 때문에 반환값은 별도로 없다. 그리고 연관된 콜백 함수들은 response 가 반환될때마다 호출된다.
다음 예제는 원격 콘텐츠를 텍스트 형식으로 가져오는 소스입니다. http://www.daum.net 웹페이지로 부터 앞의 300글자만 alert창으로 보여줍니다.
function getHtml() {
var params = {};
params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT;
params[gadgets.io.RequestParameters.REFRESH_INTERVAL] = 10 * 60;
var url = "http://www.daum.net";
gadgets.io.makeRequest(url, response, params);
};
function response(obj) {
//obj.text contains the text of the page that was requested
var str = obj.text;
var html = str.substr(0,400);
alert(html);
};
gadgets.util.registerOnLoadHandler(getHtml);
이 예제는 makeRequest()의 기본적인 사용법을 보여줍니다.
makeRequest()가 호출될 때 위젯/가젯 API는 비동기적인 HTTP GET request를 해당 URL로 보내고, 이를 해당 함수로 전달한다.
makeRequest()가 반환되고 난 후, 콜백 함수가 호출된다. 이 의미는 콜백 함수안에 의존적인 코드를 넣거나, 콜백 함수에 의해 호출되는 내부 함수를 넣어야 한다는 의미이다.
makeRequest() 함수는 다음과 같은 구조로 반환값을 갖는다.
data : 파싱된 데이터
errors : 오류가 발생하였을 경우, 오류내용
text : 반환 된 텍스트
기본적으로 원격 콘텐츠는 text로 반환됩니다. opt_params 필드의 CONTENT_TYPE의 값을 조정하여 반환 형식을 변경할 수 있습니다.
TEXT : gadgets.io.ContentType.TEXT
DOM : gadgets.io.ContentType.DOM
JSON : gadgets.io.ContentType.JSON
1. TEXT 형태 사용하기
다음 원격에 있는 XML파일을 아무 변환없이 그대로 TEXT로 표시하는 예제입니다.
이 예제는 기본적인 파라미터를 사용하여 가져올 콘텐츠 타입을 세팅하는 방법을 보여줍니다. 콜백함수인 response안에서 obj.text를 이용하여 반환된 TEXT를 사용합니다.
]]>
2. XML 형태 사용하기
XML문서를 탐색하기 위해서 makeRequest()를 사용할 수 있습니다. XML로부터 원하는 값을 추출해서 HTLM이나 CSS와 결합시켜, 위젯/가젯 안에 HTML 결과로 렌더링이 가능합니다.
다음 XML 파일은 Daum 검색의 실시간 이슈검색어 정보를 포함하고 있습니다.
최상위 노드는 DTOP_RT_TO_KEYWORD이고, 이 노드는 여러개의 RECORD 노드를 가지고 있습니다.
각각의 RECORD 노드는 순위, 키워드, 이전순위, 증감, 링크 정보를 가지고 있습니다.