# Zend_Rest_Route

Le composant `Zend_Rest` contient une route RESTful pour `Zend_Controller_Router_Rewrite`. Cette route permet un schéma de routage fonction de la méthode HTTP et de l'URI 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'URI.

## Comportement de Zend_Rest_Route

Méthode | URI | Module_Controller::action
--- | --- | ---
`GET` | `/product/ratings/` | `Product_RatingsController::indexAction()`
`GET` | `/product/ratings/:id` | `Product_RatingsController::getAction()`
`POST` | `/product/ratings` | `Product_RatingsController::postAction()`
`PUT` | `/product/ratings/:id` | `Product_RatingsController::putAction()`
`DELETE` | `/product/ratings/:id` | `Product_RatingsController::deleteAction()`
`POST` | `/product/ratings/:id?_method=PUT` | `Product_RatingsController::putAction()`
`POST` | `/product/ratings/:id?_method=DELETE` | `Product_RatingsController::deleteAction()`

## Utilisation de Zend_Rest_Route

Pour activer `Zend_Rest_Route` 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:

    $front     = Zend_Controller_Front::getInstance();
    $restRoute = new Zend_Rest_Route($front);
    $front->getRouter()->addRoute('default', $restRoute);

Si `Zend_Rest_Route` ne trouve aucun module, contrôleur, action valides, il retournera `FALSE` et la route suivante sera alors analysée par le routeur.

Pour activer `Zend_Rest_Route` pour des modules spécifiques, construisez l'objet avec comme troisième paramètre, un tableau de noms de modules :

    $front     = Zend_Controller_Front::getInstance();
    $restRoute = new Zend_Rest_Route($front, array(), array('product'));
    $front->getRouter()->addRoute('rest', $restRoute);

Pour activer `Zend_Rest_Route` 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.

    $front     = Zend_Controller_Front::getInstance();
    $restRoute = new Zend_Rest_Route($front, array(), array(
        'product' => array('ratings')
    ));
    $front->getRouter()->addRoute('rest', $restRoute);

## Zend_Rest_Route avec Zend_Config_Ini

To use Zend_Rest_Route from an INI config file, use a route type parameter and set the config options:

    routes.rest.type = Zend_Rest_Route
    routes.rest.defaults.controller = object
    routes.rest.mod = project,user

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.

Then use the addConfig() method of the Rewrite router object:

    $config = new Zend_Config_Ini('path/to/routes.ini');
    $router = new Zend_Controller_Router_Rewrite();
    $router->addConfig($config, 'routes');

## Zend_Rest_Controller

Pour vous aidez à utiliser des contrôleurs avec `Zend_Rest_Route`, faites les étendre `Zend_Rest_Controller`. `Zend_Rest_Controller` définit les 5 opérations RESTful les plus connues sous forme de méthodes abstraites.

- `indexAction()` - Devrait récupérer un index des ressources et le passer à la vue.

- `getAction()` - Devrait récupérer des données d'une ressource définie par URI et les passer à la vue.

- `postAction()` - Devrait accepter une nouvelle ressource et la faire persister (la sauvegarder).

- `putAction()` - Devrait accepter une ressource indentifiée par URI et la faire persister (la sauvegarder).

- `deleteAction()` - Devrait supprimer la ressource identifiée par URI.