<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.rest.server">
    <title>Zend_Rest_Server</title>

    <sect2 id="zend.rest.server.introduction">
        <title>Introduction</title>

        <para>
            Zend_Rest_Server est prévu comme un serveur supportant l'ensemble des
            fonctionnalités d'un serveur REST.
        </para>
    </sect2>

    <sect2 id="zend.rest.server.usage">
        <title>Utilisation d'un serveur REST</title>

        <example id="zend.rest.server.usage.example-1">
            <title>Utilisation basique Zend_Rest_Server - Avec des classes</title>

            <programlisting language="php"><![CDATA[
$server = new Zend_Rest_Server();
$server->setClass('Mon_Service_Classe');
$server->handle();
]]></programlisting>
        </example>

        <example id="zend.rest.server.usage.example-2">
            <title>Utilisation basique Zend_Rest_Server - Avec des fonctions</title>

            <programlisting language="php"><![CDATA[
/**
 * Dit Bonjour
 *
 * @param string $qui
 * @param string $quand
 * @return string
 */
function ditBonjour($qui, $quand)
{
    return "Bonjour $qui, bonne $quand";
}

$server = new Zend_Rest_Server();
$server->addFunction('ditBonjour');
$server->handle();
]]></programlisting>
        </example>
    </sect2>

    <sect2 id="zend.rest.server.args">
        <title>Appelé un service Zend_Rest_Server</title>

        <para>
            Pour appeler un service <classname>Zend_Rest_Server</classname>, vous devez
            fournir un argument de <code>method</code> GET/POST avec une valeur qui est la méthode
            que vous souhaitez appeler. Vous pouvez alors ajouter tout nombre d'arguments en
            utilisant le nom de l'argument (c.-à-d. "qui ") ou en utilisant 'arg' suivi de la
            position numérique de l'argument (c.-à-d. "arg1").
        </para>

        <note>
            <title>Index numérique</title>

            <para>Les arguments numériques utilisent 1 comme point de départ.</para>
        </note>

        <para>
            Pour appeler le <code>ditBonjour</code> de l'exemple ci-dessus, vous pouvez
            employer soit :
        </para>

        <para><code>?method=ditBonjour&amp;qui=Davey&amp;quand=journée</code></para>

        <para>or:</para>

        <para><code>?method=ditBonjour&amp;arg1=Davey&amp;arg2=journée</code></para>
    </sect2>

    <sect2 id="zend.rest.server.customstatus">
        <title>Envoyer un statut personnalisé</title>

        <para>
            En envoyant des valeurs, pour ajouter un statut personnalisé, vous pouvez envoyer
            un tableau avec une clé <code>status</code>.
        </para>

        <example id="zend.rest.server.customstatus.example-1">
            <title>Renvoyer un statut personnalisé</title>

            <programlisting language="php"><![CDATA[
/**
 * Dit Bonjour
 *
 * @param string $qui
 * @param string $quand
 * @return array
 */
function ditBonjour($qui, $quand)
{
    return array('msg' => "Une erreur est apparue", 'status' => false);
}

$server = new Zend_Rest_Server();
$server->addFunction('ditBonjour');
$server->handle();
]]></programlisting>
        </example>
    </sect2>

    <sect2 id="zend.rest.server.customxml">
        <title>Renvoyer une réponse XML personnalisée</title>

        <para>
            Si vous voulez retourner du <acronym>XML</acronym> personnalisé, retournez simplement un objet
            <code>DOMDocument</code>, <code>DOMElement</code> ou
            <code>SimpleXMLElement</code>.
        </para>

        <example id="zend.rest.server.customxml.example-1">
            <title>Renvoyer une réponse XML personnalisée</title>

            <programlisting language="php"><![CDATA[
/**
 * Dit Bonjour
 *
 * @param string $who
 * @param string $when
 * @return SimpleXMLElement
 */
function ditBonjour($qui, $quand)
{
    $xml ='<?xml version="1.0" encoding="ISO-8859-1"?>
<mysite>
    <value>Salut $qui! J\'espère que tu passes une bonne $when</value>
    <constant>200</constant>
</mysite>';

    $xml = simplexml_load_string($xml);
    return $xml;
}

$server = new Zend_Rest_Server();
$server->addFunction('ditBonjour');

$server->handle();
]]></programlisting>
        </example>

        <para>La réponse du service sera retournée sans modification au client.</para>
    </sect2>
</sect1>