Zend_Controller-Router-Route-Rest.xml 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 17171 -->
  3. <!-- Reviewed: no -->
  4. <sect3 id="zend.controller.router.routes.rest">
  5. <title>Zend_Rest_Route</title>
  6. <para>
  7. Die Komponente <classname>Zend_Rest</classname> enthält eine RESTvolle Route für
  8. <classname>Zend_Controller_Router_Rewrite</classname>. Diese Route bietet ein
  9. standartisiertes Routing Schema das Routinganfragen durch Übersetzung der
  10. <acronym>HTTP</acronym> Methode und der <acronym>URI</acronym> zu einem Modul,
  11. Controller und einer Action. Die unten stehende Tabelle bietet eine Übersicht darüber
  12. wie Anfragemethoden und <acronym>URI</acronym>'s geroutet werden.
  13. </para>
  14. <table frame="all">
  15. <title>Verhalten von 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>Methode</entry>
  23. <entry><acronym>URI</acronym></entry>
  24. <entry>Module_Controller::action</entry>
  25. </row>
  26. </thead>
  27. <tbody>
  28. <row>
  29. <entry>GET</entry>
  30. <entry><filename>/product/ratings/</filename></entry>
  31. <entry><methodname>Product_RatingsController::indexAction()</methodname></entry>
  32. </row>
  33. <row>
  34. <entry>GET</entry>
  35. <entry><filename>/product/ratings/:id</filename></entry>
  36. <entry><methodname>Product_RatingsController::getAction()</methodname></entry>
  37. </row>
  38. <row>
  39. <entry>POST</entry>
  40. <entry><filename>/product/ratings</filename></entry>
  41. <entry><methodname>Product_RatingsController::postAction()</methodname></entry>
  42. </row>
  43. <row>
  44. <entry>PUT</entry>
  45. <entry><filename>/product/ratings/:id</filename></entry>
  46. <entry><methodname>Product_RatingsController::putAction()</methodname></entry>
  47. </row>
  48. <row>
  49. <entry>DELETE</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>POST</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>POST</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. <para>
  71. Um <classname>Zend_Rest_Route</classname> für eine komplette Anwendung einzuschalten muss
  72. diese ohne Konfigurationsparameter erstellt und als Standardroute dem
  73. Frontcontroller hinzugefügt werden:
  74. </para>
  75. <programlisting language="php"><![CDATA[
  76. $front = Zend_Controller_Front::getInstance();
  77. $restRoute = new Zend_Rest_Route($front);
  78. $front->getRouter()->addRoute('default', $restRoute);
  79. ]]></programlisting>
  80. <note>
  81. <para>
  82. Wenn <classname>Zend_Rest_Route</classname> keinem gültigen Modul, Controller oder
  83. keiner Action entspricht gibt diese <constant>FALSE</constant> zurück und der Router
  84. versucht eine Entsprechung zu finden indem die nächste Route im Router verwendet wird.
  85. </para>
  86. </note>
  87. <para>
  88. Um <classname>Zend_Rest_Route</classname> für spezielle Module einzuschalten muss diese
  89. mit einem Array von Modulnamen als 3tes Argument des Constructors erstellt werden:
  90. </para>
  91. <programlisting language="php"><![CDATA[
  92. $front = Zend_Controller_Front::getInstance();
  93. $restRoute = new Zend_Rest_Route($front, array(), array('product'));
  94. $front->getRouter()->addRoute('rest', $restRoute);
  95. ]]></programlisting>
  96. <para>
  97. Um <classname>Zend_Rest_Route</classname> für spezielle Controller einzuschalten muss ein
  98. Array von Controllernamen als Wert für jedes Modul (Arrayelement) hinzugefügt werden.
  99. </para>
  100. <programlisting language="php"><![CDATA[
  101. $front = Zend_Controller_Front::getInstance();
  102. $restRoute = new Zend_Rest_Route($front, array(), array(
  103. 'product' => array('ratings')
  104. ));
  105. $front->getRouter()->addRoute('rest', $restRoute);
  106. ]]></programlisting>
  107. <sect4 id="zend.rest.controller">
  108. <title>Zend_Rest_Controller</title>
  109. <para>
  110. Um bei der Entwicklung von Controllern zu Hilfe zu sein die mit
  111. <classname>Zend_Rest_Route</classname> verwendet werden, müssen die Controller von
  112. <classname>Zend_Rest_Controller</classname> erweitert werden.
  113. <classname>Zend_Rest_Controller</classname> definiert die 5 am meisten benötigten
  114. Operationen für RESTvolle Ressourcen in der Form von abstrakten Actionmethoden.
  115. </para>
  116. <itemizedlist>
  117. <listitem>
  118. <para>
  119. <emphasis><methodname>indexAction()</methodname></emphasis> -
  120. Sollte einen Index von Ressourcen empfangen und diese mit der View
  121. verknüpfen.
  122. </para>
  123. </listitem>
  124. <listitem>
  125. <para>
  126. <emphasis><methodname>getAction()</methodname></emphasis> -
  127. Sollte eine einzelne Ressource empfangen die von einer <acronym>URI</acronym>
  128. identifiziert wird und diese mit der Vew verknüpfen.
  129. </para>
  130. </listitem>
  131. <listitem>
  132. <para>
  133. <emphasis><methodname>postAction()</methodname></emphasis> -
  134. Sollte eine einzelne neue Ressource akzeptieren und dessen Status persistent
  135. machen.
  136. </para>
  137. </listitem>
  138. <listitem>
  139. <para>
  140. <emphasis><methodname>putAction()</methodname></emphasis> -
  141. Sollte eine einzelne Ressource akzeptieren die von einer <acronym>URI</acronym>
  142. identifiziert wird und dessen Status persistent machen.
  143. </para>
  144. </listitem>
  145. <listitem>
  146. <para>
  147. <emphasis><methodname>deleteAction()</methodname></emphasis> -
  148. Sollte eine einzelne Ressource löschen die von einer <acronym>URI</acronym>
  149. identifiziert wird.
  150. </para>
  151. </listitem>
  152. </itemizedlist>
  153. </sect4>
  154. </sect3>
  155. <!--
  156. vim:se ts=4 sw=4 et:
  157. -->