<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 24249 -->
<sect3 id="zend.controller.router.routes.rest">
    <title>Zend_Rest_Route(日本語)</title>

    <para>
        <classname>Zend_Rest</classname>コンポーネントは、
        <classname>Zend_Controller_Router_Rewrite</classname>のためにRESTfulなルートを含みます。
        このルートは、<acronym>HTTP</acronym>メソッド及び<acronym>URI</acronym>をモジュール、
        コントローラ及びアクションに変換することにより、
        リクエストを割り振る標準化されたルーティング機構を提供します。
        下表では、リクエスト・メソッドと<acronym>URI</acronym>を割り振る方法の概要を提示します。
    </para>

    <table frame="all">
        <title>Zend_Rest_Route Behavior</title>

        <tgroup cols='3' align='left' colsep='1' rowsep='1'>
            <colspec colname='method' />
            <colspec colname='URI' />
            <colspec colname='route' />
            <thead>
                <row>
                    <entry>メソッド</entry>
                    <entry><acronym>URI</acronym></entry>
                    <entry>Module_Controller::action</entry>
                </row>
            </thead>
            <tbody>
                <row>
                    <entry><constant>GET</constant></entry>
                    <entry><filename>/product/ratings/</filename></entry>
                    <entry><methodname>Product_RatingsController::indexAction()</methodname></entry>
                </row>
                <row>
                    <entry><constant>GET</constant></entry>
                    <entry><filename>/product/ratings/:id</filename></entry>
                    <entry><methodname>Product_RatingsController::getAction()</methodname></entry>
                </row>
                <row>
                    <entry><constant>POST</constant></entry>
                    <entry><filename>/product/ratings</filename></entry>
                    <entry><methodname>Product_RatingsController::postAction()</methodname></entry>
                </row>
                <row>
                    <entry><constant>PUT</constant></entry>
                    <entry><filename>/product/ratings/:id</filename></entry>
                    <entry><methodname>Product_RatingsController::putAction()</methodname></entry>
                </row>
                <row>
                    <entry><constant>DELETE</constant></entry>
                    <entry><filename>/product/ratings/:id</filename></entry>
                    <entry>
                        <methodname>Product_RatingsController::deleteAction()</methodname>
                    </entry>
                </row>
                <row>
                    <entry><constant>POST</constant></entry>
                    <entry><filename>/product/ratings/:id?_method=PUT</filename></entry>
                    <entry><methodname>Product_RatingsController::putAction()</methodname></entry>
                </row>
                <row>
                    <entry><constant>POST</constant></entry>
                    <entry><filename>/product/ratings/:id?_method=DELETE</filename></entry>
                    <entry>
                        <methodname>Product_RatingsController::deleteAction()</methodname>
                    </entry>
                </row>
            </tbody>
        </tgroup>
    </table>

    <sect4 id="zend.rest.route_usage">
        <title>Zend_Rest_Route 利用法</title>

    <para>
        <classname>Zend_Rest_Route</classname>をアプリケーション全てで有効にするには、
        構成パラメータ無しで構築して、フロントコントローラにデフォルトのルートとして追加してください。
    </para>

    <programlisting language="php"><![CDATA[
$front     = Zend_Controller_Front::getInstance();
$restRoute = new Zend_Rest_Route($front);
$front->getRouter()->addRoute('default', $restRoute);
]]></programlisting>

    <note>
        <para>
            もし<classname>Zend_Rest_Route</classname>が有効なモジュール、
            コントローラまたはアクションにマッチできなければ、<constant>FALSE</constant>を返します。
            そして、ルータはルータのなかの次のルートを使ってマッチを試みます。
        </para>
    </note>

    <para>
        特定のモジュールで<classname>Zend_Rest_Route</classname>を有効にするには、
        コンストラクタの３番目の引数としてモジュール名の配列を使って構成します。
    </para>

    <programlisting language="php"><![CDATA[
$front     = Zend_Controller_Front::getInstance();
$restRoute = new Zend_Rest_Route($front, array(), array('product'));
$front->getRouter()->addRoute('rest', $restRoute);
]]></programlisting>

    <para>
        特定のコントローラで<classname>Zend_Rest_Route</classname>を有効にするには、
        コントローラ名の配列を各モジュールの配列の要素の値として追加します。
    </para>

    <programlisting language="php"><![CDATA[
$front     = Zend_Controller_Front::getInstance();
$restRoute = new Zend_Rest_Route($front, array(), array(
    'product' => array('ratings')
));
$front->getRouter()->addRoute('rest', $restRoute);
]]></programlisting>

    </sect4>

    <sect4 id="zend.rest.route_config">
        <title>Zend_Rest_Route with Zend_Config_Ini</title>

    <para>
        <acronym>INI</acronym> 構成ファイルから <classname>Zend_Rest_Route</classname> を使うには、
        ルート型のパラメータを使用して、構成オプションを設定します。
    </para>

    <programlisting language="ini"><![CDATA[
routes.rest.type = Zend_Rest_Route
routes.rest.defaults.controller = object
routes.rest.mod = project,user
]]></programlisting>

    <!-- TODO : to be translated -->
    <para>
        The 'type' option designates the RESTful routing config type.
        The 'defaults' option is used to specify custom default
        module, controller, and/or actions for the route. All other options
        in the config group are treated as RESTful module names, and their
        values are RESTful controller names. The example config defines
        <classname>Mod_ProjectController</classname> and <classname>Mod_UserController</classname> as RESTful controllers.
    </para>

    <para>
        そして、Rewrite ルータ･オブジェクトの <methodname>addConfig()</methodname> メソッドを使います。
    </para>

    <programlisting language="php"><![CDATA[
$config = new Zend_Config_Ini('path/to/routes.ini');
$router = new Zend_Controller_Router_Rewrite();
$router->addConfig($config, 'routes');
]]></programlisting>

    </sect4>

    <sect4 id="zend.rest.controller">
        <title>Zend_Rest_Controller</title>

        <para>
            <classname>Zend_Rest_Route</classname>を使う
            コントローラの開発を助けるか誘導するためには、
            <classname>Zend_Rest_Controller</classname>からコントローラを拡張してください。
            <classname>Zend_Rest_Controller</classname>では、
            RESTfulなリソースのために5つの最も一般的に必要とされる操作を
            抽象的なアクション・メソッドの形で定義します。
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <emphasis><methodname>indexAction()</methodname></emphasis> -
                    リソースのインデックスを取得して、それをビューに割り当てます。
                </para>
            </listitem>
            <listitem>
                <para>
                    <emphasis><methodname>getAction()</methodname></emphasis> -
                    <acronym>URI</acronym>で識別される単一のリソースを取得して、それをビューに割り当てます。
                </para>
            </listitem>
            <listitem>
                <para>
                    <emphasis><methodname>postAction()</methodname></emphasis> -
                    単一の新しいリソースを受け取って、その状態を持続します。
                </para>
            </listitem>
            <listitem>
                <para>
                    <emphasis><methodname>putAction()</methodname></emphasis> -
                    <acronym>URI</acronym>で識別される単一のリソースを受け取って、その状態を持続します。
                </para>
            </listitem>
            <listitem>
                <para>
                    <emphasis><methodname>deleteAction()</methodname></emphasis> -
                    <acronym>URI</acronym>で識別される単一のリソースを削除します。
                </para>
            </listitem>
        </itemizedlist>

    </sect4>
</sect3>
<!--
vim:se ts=4 sw=4 et:
-->
