1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201
|
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect3 id="zend.controller.router.routes.rest">
<title>Zend_Rest_Route</title>
<para>
Le composant <classname>Zend_Rest</classname> contient une route RESTful pour
<classname>Zend_Controller_Router_Rewrite</classname>. Cette route permet un
schéma de routage fonction de la méthode <acronym>HTTP</acronym> et de
l'<acronym>URI</acronym> afin d'y faire correspondre un module, contrôleur,
et action. Le tableau suivant vous donne un aperçu du schéma de routage en
fonction de l'<acronym>URI</acronym>.
</para>
<table frame="all">
<title>Comportement de Zend_Rest_Route</title>
<tgroup cols='3' align='left' colsep='1' rowsep='1'>
<colspec colname='method' />
<colspec colname='URI' />
<colspec colname='route' />
<thead>
<row>
<entry>Méthode</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>Utilisation de Zend_Rest_Route</title>
<para>
Pour activer <classname>Zend_Rest_Route</classname> pour une application entière,
construisez en un objet sans paramètre spécifique et ajoutez le comme route par défaut dans
le contrôleur frontal:
</para>
<programlisting language="php"><![CDATA[
$front = Zend_Controller_Front::getInstance();
$restRoute = new Zend_Rest_Route($front);
$front->getRouter()->addRoute('default', $restRoute);
]]></programlisting>
<note>
<para>
Si <classname>Zend_Rest_Route</classname> ne trouve aucun module, contrôleur, action
valides, il retournera <constant>FALSE</constant> et la route suivante sera alors
analysée par le routeur.
</para>
</note>
<para>
Pour activer <classname>Zend_Rest_Route</classname> pour des modules spécifiques,
construisez l'objet avec comme troisième paramètre, un tableau de noms de modules :
</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>
Pour activer <classname>Zend_Rest_Route</classname> pour des contrôleurs spécifiques,
construisez l'objet avec comme troisième paramètre, un tableau de noms de contrôleurs
en correspondance avec des noms de modules.
</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 avec Zend_Config_Ini</title>
<para>
To use Zend_Rest_Route from an INI config file, use a route type
parameter and set the config options:
</para>
<programlisting language="ini"><![CDATA[
routes.rest.type = Zend_Rest_Route
routes.rest.defaults.controller = object
routes.rest.mod = project,user
]]></programlisting>
<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
Mod_ProjectController and Mod_UserController as RESTful controllers.
</para>
<para>Then use the addConfig() method of the Rewrite router object:</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>
Pour vous aidez à utiliser des contrôleurs avec
<classname>Zend_Rest_Route</classname>, faites les étendre
<classname>Zend_Rest_Controller</classname>.
<classname>Zend_Rest_Controller</classname> définit les 5 opérations RESTful les
plus connues sous forme de méthodes abstraites.
</para>
<itemizedlist>
<listitem>
<para>
<emphasis><methodname>indexAction()</methodname></emphasis> -
Devrait récupérer un index des ressources et le passer à la vue.
</para>
</listitem>
<listitem>
<para>
<emphasis><methodname>getAction()</methodname></emphasis> -
Devrait récupérer des données d'une ressource définie par <acronym>URI</acronym>
et les passer à la vue.
</para>
</listitem>
<listitem>
<para>
<emphasis><methodname>postAction()</methodname></emphasis> -
Devrait accepter une nouvelle ressource et la faire persister (la sauvegarder).
</para>
</listitem>
<listitem>
<para>
<emphasis><methodname>putAction()</methodname></emphasis> -
Devrait accepter une ressource indentifiée par <acronym>URI</acronym> et
la faire persister (la sauvegarder).
</para>
</listitem>
<listitem>
<para>
<emphasis><methodname>deleteAction()</methodname></emphasis> -
Devrait supprimer la ressource identifiée par <acronym>URI</acronym>.
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
|