File: Zend_Controller-Router-Route-Rest.xml

package info (click to toggle)
zendframework 1.12.9%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 133,584 kB
  • sloc: xml: 1,311,829; php: 570,173; sh: 170; makefile: 125; sql: 121
file content (201 lines) | stat: -rw-r--r-- 8,502 bytes parent folder | download | duplicates (2)
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&#160;:
        </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>