Zend_Controller-Router-Route-Rest.xml 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 16605 -->
  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 false zurück und der Router versucht eine
  84. 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. -->