본문 바로가기

smells digital

[XE] JSON 모듈(iBroker) 만들기..

이름 : iBroker(가칭)
목적 : XE의 내용을 JSON으로 반환하는 모듈
용도 : ajax나 smart phone에서 사용


오래간만의 모듈 제작인지라, 감이 안잡혀서 고생을 했다.

일단 hello world 모듈로 시작을 한다.


module.xml에 기능 정의

module.xml에는 grant, permission, actions를 정의한다.
actions에 아래와 같이 hello action을 적는다.
<action name="hello" type="view" />


클래스 생성

가장 기초가 되는 클래스는 iBroker 클래스로 ModuleObject를 상속받는다.
이는 iBroker.class.php 파일로 정의한다.

iBrokerView 클래스는 iBroker.view.php에, iBrokerAPI 클래스는 iBroker.api.php에 만든다.

View클래스는 템플릿(스킨)에 값을 채워서 html형식으로 결과를 보여주는 역할이고
API쪽이 json관련 작업을 담당한다.


함수 정의

View와 API클래스 모두 hello함수를 만든다.

View 클래스의 hello 함수는 아래와 같다.

function hello() {
Context::setResponseMethod('JSON');
}

DisplayHandler 클래스에서 printContent의 함수가 결과물을 담당하는 부분이다.
이 곳의 소스를 뒤져보면 Context::getRequestMethod() 함수를 이용해서 HTML, XML, JSON 방식의 아웃풋으로 분기를 하는 부분이 있다.

View클래스에서는 ResponseMethod의 값을 JSON으로 설정해준다.

API클래스의 hello함수를 보자

function hello(&$oModule) {
Context::setRequestMethod('JSON');
$oModule->add('output','world');
}
API클래스내의 함수에서는 RequestMetohd의 값을 JSON으로 설정해준다.

- 왜 그런지는 모르겠다. 예전에 JSON 모듈을 만들때는 상관없이 동작을 했었더랬다.


이러면 모듈은 다 만드것이다. 이를 xe/module에 설치(복사)하면 성공~!

- 나는 다른 폴더에 만들고 심볼릭 링크를 module 디렉토리에 만들어 넣는다.




결과 확인하기

브라우저에서 http://xe설치 경로/?module=iBroker&act=hello 를 입력하면 iBroker 모듈의 hello action을 호출하게 된다.

그러면 화면에는 JSON형식의 결과가 나온다.
{"output":"world","error":0,"message":"success"}



이전글에서 만든것과 같은 모듈을 다시 만들어 보았다

역시나 문서화가.. 가장 큰 문제다. xe의 내부 소스를 보면서 작업을 해야 하다니.

반응형

'smells digital' 카테고리의 다른 글

[안드로이드] 구글 마켓(유료,무료), T-Store 살펴보기  (0) 2010.05.10
[안드로이드] HTC의 센스 UI  (0) 2010.05.05
iPAD 개발을 위한 SDK 소식  (0) 2010.03.31
Xcode 3.2 beta - Bug  (0) 2010.02.01
이것은~~!  (0) 2010.01.19