foREST – Framework léger d’API RESTful écrit en PHP 5.3

Je vous présente aujourd’hui foREST, un petit framework d’API RESTful développé par mes soins durant quelques moments d’ennuis. Ce framework utilise les composants YAML et Console du framework Symfony2. Le projet est disponible sur Github, donc n’hésitez pas à participer. Il vous permettra de réaliser des requêtes de type REST (GET, POST, PUT, DELETE), de [...]

Partager cet article : Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Digg
  • del.icio.us
  • StumbleUpon
  • email
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • Live-MSN
  • MySpace
  • Pownce
  • Scoopeo
  • Wikio
  • Wikio FR

Je vous présente aujourd’hui foREST, un petit framework d’API RESTful développé par mes soins durant quelques moments d’ennuis.
Ce framework utilise les composants YAML et Console du framework Symfony2.

Le projet est disponible sur Github, donc n’hésitez pas à participer.

Il vous permettra de réaliser des requêtes de type REST (GET, POST, PUT, DELETE), de gérer des utilisateurs et des droits d’accès à certaines ressources ainsi que de gérer des paramètres de différents types (string, integer, …) fournis dans vos requêtes.

Fichiers de configuration

Les fichiers de configuration utilisent le format YAML et j’ai utilisé le composant Symfony2 afin de parser le YAML dans ce projet.

Vous pouvez définir des connections à plusieurs bases de données nommées dans le fichier config/databases.yml comme suit pour la base de données nommée « main » :

main:
  dsn: mysql:host=localhost;dbname=forest
  username: root
  password: root

Les utilisateurs et roles d’accès à votre API peuvent être gérés simplement grâce à l’implémentation du composant Console de Symfony2 :

Pour ajouter un utilisateur, utilisez la commande :

php console user:add username password role

Pour supprimer un utilisateur :

php console user:del username

Enfin, il ne faut pas oublier de rafraîchir le fichier .htpasswd avec les nouvelles informations en tapant :

php console user:refresh

Créer une nouvelle ressource

Créer une ressource consiste à créer un répertoire du nom de votre ressource dans le répertoire « resources ». Par exemple : « resources/Books » et de créer à l’intérieur les 3 fichiers suivants :

routing.yml : contient les routes d’accès à vos API pour cette ressource. Elles sont définies sous la forme suivante :

"get:/books":
  description: "List all books by specified filters"
  resource: \Forest\Resources\Books
  action: getBooks
  role: user

queries.yml : contient les requêtes en bases de données, identifiées par une clé comme suit dans cet exemple :

"my.book.query":
  database: main
  query: >
         SELECT * FROM books

Vous pouvez ensuite appeller cette requête dans vos différentes ressources avec :

        return $this->query('my.book.query');

Enfin, il ne vous reste plus qu’à créer la classe PHP de la ressource, qui doit comporter le même nom que le répertoire de la ressource, à savoir « Books.php » dans notre exemple. Ce fichier doit prendre la forme suivante :

/**
 * foREST - a simple RESTful PHP API
 *
 * @version 1.0
 * @author Vincent Composieux - vincent.composieux@gmail.com
 */

namespace Forest\Resources;

use Forest\Core\Request,
    Forest\Core\Resource;

/**
 * Books
 */
class Books extends Resource {
    /**
     * List all books
     *
     * @param Request $request
     *
     * @return array
     */
    public function getBooks(Request $request) {
        return $this->query('my.book.query');
    }

Vous êtes maintenant prêt à utiliser l’API ! Je vous invite à me contacter si vous souhaitez plus de détails sur l’utilisation de l’API, des remarques ou encore participer sur Github.

Partager cet article : Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Digg
  • del.icio.us
  • StumbleUpon
  • email
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • Live-MSN
  • MySpace
  • Pownce
  • Scoopeo
  • Wikio
  • Wikio FR

One Comment

  • Hmm… Intéressant ! Je vais m’inspirer de cela pour le projet que j’ai à faire à l’ECTEI :) @ ta dernière phrase : ca marche autours d’une mousse les questions ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>