31.2. Zend_Rest_Client

31.2.1. µµÀÔ

Zend_Rest_Client ÀÇ »ç¿ë¹ýÀº, SoapClient ¿ÀºêÁ§Æ® (SOAP À¥ ¼­ºñ½º È®Àå ¸ðµâ) ÀÇ »ç¿ë¹ý°ú ¸Å¿ì Àß ´à¾Ò½À´Ï´Ù.REST ¼­ºñ½ºÀÇ ÇÁ·Î½ÃÀú´Â, °£´ÜÇÏ°Ô Zend_Rest_Client ÀÇ ¸Þ¼Òµå·Î¼­ ÄÝ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿ì¼±, ±× ¼­ºñ½ºÀÇ ÁÖ¼Ò¸¦ Zend_Rest_Client ÀÇ constructor¡¡ ¡¡ À¸·Î ÁöÁ¤ÇÕ´Ï´Ù.

·Ê 31.1. ±âº»ÀûÀÎ REST ¸®Äù½ºÆ®


<?php
/**
 * framework.zend.com ¼­¹ö¿¡ Á¢¼ÓÇØ, Àλ縦 ¹Þ½À´Ï´Ù
 */
require_once 'Zend/Rest/Client.php';

$client = new Zend_Rest_Client('http://framework.zend.com/rest');

echo 
$client->sayHello('Davey''Day')->get(); // "Hello Davey, Good Day"

[ÁÖÀÇ] ÄÝ ¹æ¹ýÀÇ Â÷ÀÌ

Zend_Rest_Client (Àº)´Â, ¸®¸ðÆ® ¸Þ¼ÒµåÀÇ ÄÝÀ» °¡´ÉÇÑ ÇÑ ³×ÀÌÆ¼ºêÀÎ ¸Þ¼Òµå¿Í °°°Ô ½Ç½ÃÇÏ·Á°í ÇÕ´Ï´Ù. À¯ÀÏÇÑ Â÷ÀÌ´Â, °è¼ÓÇØ get() Àΰ¡ post(), put() ȤÀº delete() ÀÇ ¸î°³ÀÇ ¸Þ¼Òµå¸¦ ÄÝ ÇØ¾ß ÇÑ´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù. À̰ÍÀº, ¸Þ¼ÒµåÀÇ ¿¬°á·Î °¡µµ ±¦Âú½À´Ï´Ù ÇØ, µ¶¸³ÇÑ ¸Þ¼Òµå ÄÝ·Î ÇØµµ ±¦Âú½À´Ï´Ù.


<?php
$client
->sayHello('Davey''Day');
echo 
$client->get();

31.2.2. ¸®½ºÆù½º

Zend_Rest_Client (À»)¸¦ »ç¿ëÇØ °£ ¸®Äù½ºÆ®´Â, ¸ðµÎ Zend_Rest_Client_Response ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù. ÀÌ ¿ÀºêÁ§Æ®¿¡´Â ¸¹Àº ÇÁ·ÓÆÛƼ°¡ ÀÖ¾î, °á°ú¿¡ °£´ÜÇÏ°Ô ¾×¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù.

Zend_Rest_Server ¿¡ ±Ù°ÅÇÏ´Â ¼­ºñ½º¿¡ ¾×¼¼½º ÇßÀ» °æ¿ì¿¡´Â, Zend_Rest_Client (Àº)´Â °á°ú¸¦ µû¶ó°¡´Â °³Àΰ¡ÀÇ ÀüÁ¦ Á¶°ÇÀ» »óÁ¤Çϰí ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ¸®½ºÆù½º ½ºÅ×ÀÌÅͽº (¼º°ø ȤÀº ½ÇÆÐ) (ÀÌ)³ª µ¹¾Æ°¡ °ªÀÇ ÇüÅ µîÀÔ´Ï´Ù.

·Ê 31.2. ¸®½ºÆù½º ½ºÅ×ÀÌÅͽº


<?php
$result 
$client->sayHello('Davey''Day')->get();

if (
$result->isSuccess()) {
    echo 
$result// "Hello Davey, Good Day"
}

À§ÀÇ ¿¹·Î, ¸®Äù½ºÆ®ÀÇ °á°ú¸¦ ¿ÀºêÁ§Æ®·Î¼­ Ãë±ÞÇØ, isSuccess() (À»)¸¦ ÄÝ Çϰí ÀÖ´Â °ÍÀ» º¸½Ç ¼ö ÀÖ°ÚÁö¿ä. ¶Ç,__toString() (À»)¸¦ ¼­Æ÷Æ®Çϰí Àֱ⠶§¹®¿¡, ´ÜÁö echo (À¸)·Î ÇÏ´Â °Í¸¸À¸·Î ¿ÀºêÁ§Æ®ÀÇ °á°ú¸¦ ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù. Zend_Rest_Client_Response (Àº)´Â, ÀÓÀÇÀÇ ½ºÄ®¶óÄ¡¸¦ echo ÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù.º¹ÀâÇÑ Çü½ÄÀÇ °æ¿ì´Â, ¹è¿­ ±â¹ý ȤÀº ¿ÀºêÁ§Æ® ±â¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

±×·¯³ª,Zend_Rest_Server (À»)¸¦ »ç¿ëÇϰí ÀÖÁö ¾Ê´Â ¼­ºñ½º¿¡ ¹®ÀÇÇÏ°í ½ÍÀº °Íµµ ÀÖ°ÚÁö¿ä.ÀÌ·¯ÇÑ °æ¿ì, Zend_Rest_Client_Response ¿ÀºêÁ§Æ®´Â SimpleXMLElement (¿Í)°ú °°Àº ÇൿÀ» ÇÕ´Ï´Ù. ±×·¯³ª, º¸´Ù °£´ÜÇÏ°Ô Ã³¸®Çϱâ À§ÇØ(¶§¹®¿¡), ÇÁ·ÓÆÛƼ°¡ ·çÆ® ¿ä¼ÒÀÇ Á÷ÇÏ¿¡ ¾ø´Â °æ¿ì¿¡´Â ÀÚµ¿ÀûÀ¸·Î XPath ±×¸®°í XML (À»)¸¦ ãµµ·Ï(µíÀÌ) Çϰí ÀÖ½À´Ï´Ù.°Ô´Ù°¡ ÇÁ·ÓÆÛƼ¿¡ ´ëÇØ¼­ ¸Þ¼Òµå·Î¼­ ¾×¼¼½º Çϸé, PHP ÀÇ °ª ȤÀº °ªÀÇ ¹è¿­·Î¼­ ±× ¿ÀºêÁ§Æ®¸¦ ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù.

·Ê 31.3. Technorati ÀÇ Rest ¼­ºñ½ºÀÇ »ç¿ë


<?php
require_once 'Zend/Rest/Client.php';

$technorati = new Zend_Rest_Client('http://api.technorati.com/bloginfo');
$technorati->key($key);
$technorati->url('http://pixelated-dreams.com');
$result $technorati->get();
echo 
$result->firstname() .' '$result->lastname();

·Ê 31.4. Technorati (À¸)·ÎºÎÅÍÀÇ ¸®½ºÆù½ºÀÇ ¿¹


<?xml version="1.0" encoding="utf-8"?>
<!-- generator="Technorati API version 1.0 /bloginfo" -->
<!DOCTYPE tapi PUBLIC "-//Technorati, Inc.//DTD TAPI 0.02//EN" "http://api.technorati.com/dtd/tapi-002.xml">
<tapi version="1.0">
    <document>
        <result>
            <url>http://pixelated-dreams.com</url>
            <weblog>
                <name>Pixelated Dreams</name>
                <url>http://pixelated-dreams.com</url>
                <author>
                    <username>DShafik</username>
                    <firstname>Davey</firstname>
                    <lastname>Shafik</lastname>
                </author>
                <rssurl>http://pixelated-dreams.com/feeds/index.rss2</rssurl>
                <atomurl>http://pixelated-dreams.com/feeds/atom.xml</atomurl>
                <inboundblogs>44</inboundblogs>
                <inboundlinks>218</inboundlinks>
                <lastupdate>2006-04-26 04:36:36 GMT</lastupdate>
                <rank>60635</rank>
            </weblog>
            <inboundblogs>44</inboundblogs>
            <inboundlinks>218</inboundlinks>
        </result>
    </document>
</tapi>

¿©±â¼­,firstname (ÀÌ)³ª lastname ±×·¸´Ù°í ÇÏ´Â ÇÁ·ÓÆÛƼ¿¡ ¾×¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰͵éÀº Åé ·¹º§ ¿ä¼Ò°¡ ¾Æ´Õ´Ï´Ù¸¸, À̸§À» ÁöÁ¤ÇÏ´Â °Í¸¸À¸·Î ÀÚµ¿ÀûÀ¸·Î ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù.

[ÁÖÀÇ] º¹¼öÀÇ ¿ä¼Ò

À̸§À¸·Î ¾×¼¼½º Çϰí ÀÖÀ» ¶§ ¸¸¾à º¹¼öÀÇ Ç׸ñÀÌ ¹ß°ßµÇ¸é, SimpleXMLElements ÀÇ ¹è¿­À» µ¹·ÁÁÝ´Ï´Ù.¸Þ¼Òµå ±â¹ýÀ¸·Î ¾×¼¼½º Çϸé, PHP ÀÇ °ªÀÇ ¹è¿­À» µ¹·ÁÁÝ´Ï´Ù.

31.2.3. ¸®Äù½ºÆ®ÀÇ Àμö

Zend_Rest_Server º£À̽ºÀÇ ¼­ºñ½º¿¡ ¸®Äù½ºÆ®¸¦ º¸³»´Â °ÍÀº ¾Æ´Ñ °æ¿ì´Â, ¸®Äù½ºÆ® ½Ã¿¡ º¹¼öÀÇ Àμö¸¦ ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. À̰ÍÀ» ½Ç½ÃÇÏ·Á¸é , Àμö¸í°ú °°Àº À̸§ÀÇ ¸Þ¼Òµå¸¦ ÄÝ ÇØ, ±× ÃÖÃÊÀÇ (±×¸®°í À¯ÀÏÇÑ) Àμö·Î¼­ °ªÀ» ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¸Þ¼Òµå ÄÝÀº ±× ¿ÀºêÁ§Æ® ÀÚ½ÅÀ» µ¹·ÁÁֹǷÎ, ¸Þ¼Òµå¸¦ ¿¬°áÇÑ´Ù "È帣´Â" Çü½Ä¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÃÖÃÊÀÇ ÄÝ (ȤÀº º¹¼öÀÇ Àμö¸¦ ÁöÁ¤ÇßÀ» °æ¿ìÀÇ ÃÖÃÊÀÇ Àμö) (Àº)´Â Ç×»ó,Zend_Rest_Server ¼­ºñ½º¸¦ ÄÝ ÇÒ ¶§ÀÇ ¸Þ¼Òµå·Î °£ÁÖÇØÁý´Ï´Ù.

·Ê 31.5. ¸®Äù½ºÆ®ÀÇ ÀμöÀÇ ¼³Á¤


<?php
$client 
= new Zend_Rest_Client('http://example.org/rest');

$client->arg('value1');
$client->arg2('value2');
$client->get();

// È¤Àº

$client->arg('value1')->arg2('value2')->get();

À§ÀÇ ¿¹ÀÇ 2Åë¹æ¹ýÀº ¸ðµÎ, ´ÙÀ½°ú °°Àº get Àμö°¡ µË´Ï´Ù. ?method=arg&arg1=value1&arg=value1&arg2=value2

ÃÖÃÊÀÇ $client->arg('value1'); ÀÇ ÄÝÀÌ method=arg&arg1=value1 ¹× arg=value1 ÀÇ 2ÅëÀÇ °á°ú°¡ µÇ´Â °Í¿¡ ±âºÐ³ª¹«Áö¿ä.À̰Ϳ¡ ÀÇÇØ¼­, Zend_Rest_Server ÇÏÁö¸¸ ¸®Äù½ºÆ®¸¦ ÀûÀýÈ÷ ÀÌÇØÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ±× ¼­ºñ½º¸¦ »ç¿ëÇÏ´Â ¿¡ ÇØ´çÇÏ´Â ÀüÁ¦ Áö½ÄÀ» ÇÊ¿ä·Î ÇÏÁö ¾Ê°Ô µË´Ï´Ù.

[°æ°í] Zend_Rest_Client ÀÇ ¾ö°Ý¼º

¹Þ´Â Àμö¿¡ ´ëÇØ ¾ö°ÝÇÑ REST ¼­ºñ½º¿¡¼­´Â, Zend_Rest_Client ÀÇ »ç¿ë¿¡ ½ÇÆÐÇÏ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. À̰ÍÀº À§¿¡¼­ ¼³¸íÇÑ °Åµ¿ÀÇ Å¿ÀÔ´Ï´Ù. À̰ÍÀº ±×·¸°Ô ºó¹øÈ÷ ÀϾ´Â °ÍÀº ¾Æ´Ï±â ¶§¹®¿¡, ƯÈ÷ ¹®Á¦´Â µÇÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù.