Zend_Controller-Router-Route-Rest.xml 8.3 KB

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