플렉스로 만들기는 했지만, 뭐 모든 클라이언트 플랫폼에서 쉽게 만들 수 있습니다.

요아래에 있는 RESTful Web Service를 구축하셨다면 그것을 이용한 클라이언트가 필요할 것입니다.

게시판용 RESTful WebService만들기
http://mudchobo.tomeii.com/tt/345
http://mudchobo.tomeii.com/tt/346

그래서 구현해봤습니다.
우선 5가지 요청을 합니다.

1. 게시물 리스트를 받아오는 것(GET)
2. 게시물 1개의 데이터를 받아오는 것(GET)
3. 게시물 쓰기(POST)
4. 게시물 삭제(DELETE)
5. 게시물 수정(PUT)

핵심은 RESTful요청이 가능한 라이브러리입니다. 요아래를 참고하세요~

[Flex/AIR] RESTful WebService를 위한 Flex RestService Library!


이 라이브러리를 통해 RESTService요청을 합니다. (기존 Flex에 있는 HTTPService는 DELETE와 PUT이 안됩니다.)

<rest:RESTService id="boardService" method="GET"
rootURL="http://localhost/BoardWS/resources/wsboards/" port="9080"
result="resultBoardHandler(event)" fault="faultHandler(event)"/>

이런식으로 요청하면 되겠죠? ^^

아래는 구현체 소스입니다.
허접해서 도움이 될지는 모르겠지만....-_-; 어쨌든 저의 삽질의 결정체니....-_-;

저 위에서 구현한 WebService를 띄워놓고, 이 클라이언트로 접속하면 잘 될겁니다.

사용자 삽입 이미지

머드초보 이 작성.

당신의 의견을 작성해 주세요.

  1. Comment RSS : http://mudchobo.tomeii.com/tt/rss/comment/347
  2. AccessDenied 2008/10/16 16:15  편집/삭제  댓글 작성  댓글 주소

    역시 좀 짱이군 ㅎㅎㅎ

[로그인][오픈아이디란?]
넷빈즈에서는 RESTful 웹서비스를 손쉽게 만들 수 있습니다.
RESTful은 기존에 사용하던 SOAP/WSDL-based의 WebService와 다르게 매우 간단하게 HTTP를 통해서 자원을 접근할 수 있습니다. 넷빈즈 웹서비스관련문서페이지에는 이렇게 써있군요.

  • REST-based. REpresentational State Transfer is a new way to create and communicate with web services. In REST, resources have URIs and are manipulated through HTTP header operations. For more details, see RESTful Web Services.
  • SOAP/WSDL-based. In traditional web service models, web service interfaces are exposed through WSDL documents (a type of XML), which have URLs. Subsequent message exchange is in SOAP, another type of XML document. For more details, see SOAP-based Web Services.

기존 SOAP/WSDL-based는 WSDL이라는 문서에 정의된 것을 바탕으로 데이터를 요청하고, 요청한 결과를 리턴받는 것 같았습니다. 그리고 데이터를 주고받기 위해서 SOAP이라는 프로토콜을 사용했습니다. 그 프로토콜에 의하면 무슨 봉투만들고, 정의된 표준에 의해서 리턴값을 만들어야 하는 점이 있었는데요.

이 RESTful방식은 자원이 uri를 가지고 있는데요. 그냥 http요청으로 해당 자원 uri를 요청하는데, method를 get, put, delete, post를 이용해 직관적으로 자원에 접근하는 듯 합니다. 아직 잘 모르겠네요-_-; DB랑 연동해서 삽질해보려니 힘들어서 우선 제가 제일 좋아하는 sayHello만 찍어봤습니다-_-;

참고자료
넷빈즈 웹서비스 관련문서페이지
http://www.netbeans.org/kb/61/websvc/intro-ws.html

1. 느리고 답답한 넷빈즈6.1이 필요합니다.

2. New Project -> Web -> Web Application, ProjectName은 HelloWS, Next!

3. Server는 GlashFish V2로 합니다. tomcat으로는 여기서도 아마 테스트를 지원하지 않을 듯 합니다. Finish!

4. HelloWS프로젝트 이름에 대고, 오른쪽버튼 New -> Other -> Web Services -> RESTful Web Services from Patterns선택, Sinleton선택 Next!

5. Resource Package는 자기가 원하는 대로! 저는 com.mudchobo.hello,
Resource Name은 Hello. 이것만 고치면 아래는 자동으로 고쳐집니다. Path부분이 해당 자원의 uri가 됩니다. Finish!
만들어진 소스코드를 보면 HelloResource라는 클래스가 생성되었습니다. @Path("hello")라는 어노테이션이 붙었는데요. HelloResource라는 자원은 /hello로 접근하는 자원이라는 것을 지정해주는 겁니다.
이 HelloResource에는 2가지 메소드가 자동으로 만들어졌습니다. GET과 PUT인데요.
우리가 만들것은 parameter로 name을 받아서 Hello! name 을 리턴하는 것을 만들껀데요. 그러면 GET메소드를 수정해야합니다.

@GET
@ProduceMime("application/xml")
public String getXml(
@QueryParam("name")
@DefaultValue("NONE")
String name) {
return "<?xml version=\"1.0\" encoding=\"utf-8\"?><hello>Hello! " + name + "</hello>";
}

QueryParm어노테이션은 http요청 시 요청파라메터구요. 이건 name으로 받습니다. DefaultValue는 NONE로 했습니다.
보통 자원에 접근하는 주소는 아래와 같이 되더군요.
http://localhost:8080/HelloWS/resources/자원URI
hello자원은 http://localhost:8080/HelloWS/resources/hello이더군요.

저렇게 바꾸었으면 테스트를 할 수 있습니다. GlassFish가 테스트를 너무 잘 지원해줘서 참 좋습니다.

사용자 삽입 이미지

HelloResource클래스에 GET과 PUT이 있기때문에 2개가 나옵니다. 아래는 테스트결과로 리턴받는 값을 실제로 볼 수 있습니다. http Monitor도 있어서 요청한 값, 리턴값을 다 볼 수 있습니다.

이제 다른 클라이언트에서 사용할 수 있습니다. Flex에서 요청하신다면...이건 SOAP WSDL방식이 아니기 때문에 <WebService>를 사용하는 것이 아니라 <HTTPService>를 사용해야합니다.
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">

<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
private function click():void
{
service.send({name: inputName.text});
}

private function result(event:ResultEvent):void
{
labelResult.text = event.result.hello;
}
]]>
</mx:Script>
<mx:HTTPService id="service" method="GET"
url="http://localhost:8080/HelloWS/resources/hello"
result="result(event)" />

<mx:TextInput id="inputName" />
<mx:Button label="확인" click="click()"/>
<mx:Label id="labelResult" />

</mx:WindowedApplication>

해당 자원주소에 method를 지정해주고 파라메터로 name을 넘기면 됩니다.
그럼 리턴값은 xml로 받게 됩니다.

제가 잘 몰라서 그러는데, 잘못된 점 있으면 태클걸어주세요-_-; 아직도 잘 모르겠네-_-;
아졸려...-_-;


머드초보 이 작성.

당신의 의견을 작성해 주세요.

[로그인][오픈아이디란?]
이건뭐 설명이 필요없네요.
아까 전시간에 만든 WebService를 호출해봅시다.

전시간에 만들어 놓은 웹서비스
http://mudchobo.tomeii.com/tt/328

플렉스빌더를 실행합니다.
Air로 프로젝트를 하나 만듭니다.

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical">

<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;

private function callWebService():void
{
helloWebService.sayHello(input.text);
}

private function resultHandler(event:ResultEvent):void
{
Alert.show(event.result.toString());
}

private function faultHandler(event:FaultEvent):void
{
Alert.show(event.fault.message);
}
]]>
</mx:Script>

<mx:WebService id="helloWebService"
wsdl="http://localhost:9080/HelloWebApp/HelloService?WSDL"
useProxy="false"
result="resultHandler(event)"
fault="faultHandler(event)" />

<mx:TextInput id="input" enter="callWebService()"/>
<mx:Button id="button" label="Button" click="callWebService()"/>

</mx:WindowedApplication>

wsdl부분에서만 주소를 WSDL파일 주소로 써주세요.
그 외에는 RemoteObject나 HTTPService와 같이 같은 방식으로 해주면 돼요.

다음엔 RESTful이 뭔지 좀 알아봐야겠습니다.

머드초보 이 작성.

당신의 의견을 작성해 주세요.

  1. Comment RSS : http://mudchobo.tomeii.com/tt/rss/comment/329
  2. 꽃녀 2008/09/23 09:23  편집/삭제  댓글 작성  댓글 주소

    왜 머드죠?
    진흙초보인가요?
    본문과 상관없는 내용 ㅈㅅ.;;

    • 머드초보 2008/09/23 10:02  편집/삭제  댓글 주소

      아......-_-;
      http://ko.wikipedia.org/wiki/%EB%A8%B8%EB%93%9C_%EA%B2%8C%EC%9E%84
      머드라는 게임의 한장르가 있었습니다.
      MUD(Multi User Dungeon)!
      PC통신 때 해본사람만 아는 ^^
      직접 커맨드로 입력해서 동서남북으로 이동하고, 몬스터를 만나면
      '몬스터이름 공' 이런식으로 커맨드를 쳐주면 공격하고, 기술이름도
      쓰고 그러는 게임이 있었거든요 ^^

      그런 게임을 처음 접할 때 왠지 머드뒤에 초보라고 붙이면,
      거기 사람들이 많이 도와줄 것 같아서-_-;
      머드초보라고 지었는데 그 뒤로 계속 써왔네요 ^^
      중1때 처음 했으니...벌써....10년이 넘었군요 ㅠ

  3. 꽃녀 2008/09/23 12:50  편집/삭제  댓글 작성  댓글 주소

    중1이면 14살..
    그럼 머드님 나이가 24~25인가여?
    후덜덜덜...덜덜

    • 머드초보 2008/09/23 13:18  편집/삭제  댓글 주소

      아.....대충 10년이라는 얘기였는데 ^^
      그래도 거의 근처에 맞추셨네요 ^^
      26살이에요 ^^
      꽃녀님은 왜 꽃녀인지 물어봐도 될까요? ^^

  4. 꽃녀 2008/09/23 16:07  편집/삭제  댓글 작성  댓글 주소

    헉.. 머드소년님이시네요...ㅜㅜ
    부럽삼
    전 광남할려다가 이상해서 꽃남 하려고 하다가 이상해서 꽃녀로 한거에요.히히

    • 머드초보 2008/09/23 16:23  편집/삭제  댓글 주소

      소년이라뇨 ^^
      제가 얼굴에 +5나이 면상 아이템을 착용하고 있어서-_-;
      아하 그렇군요 ^^
      사실 전 처음에 여자분이신줄 알았어요-_-;

    • 열이아빠 2008/10/09 23:27  편집/삭제  댓글 주소

      그런 사연이 있었군요.
      덕분에 머드초보님에 대한 정보도
      얻어가네요..ㅎㅎ

    • 머드초보 2008/10/10 09:08  편집/삭제  댓글 주소

      아넵 ^^ 사실 방문을 유도한....-_-;
      위자드팩토리 런칭파티가시나요? ^^
      저는 치과때문에 못가는데-_-;

[로그인][오픈아이디란?]