REST + AJAX, quel couple ! (2/3)

Partie 1
Partie 3

2. Accès aux données

REST permet d’effectuer les opérations classiques CRUD (Create, Retrieve, Update, Delete) sur chacune des ressources issues de la base de données. On va donc pouvoir mapper toutes les opérations classiques du SQL avec des méthodes de reqête HTTP sur des URI bien définies. Par exemple l’URI du domaine dolebrai.net renvoie les informations sur l’artiste Mr Tac lorsqu’on lui transmet une requête de rappatriement (méthode GET) :

dolebrai.net/playlist/artistes/mr-tac/

Il m’est aussi possible de supprimer l’artiste Mr Tac en envoyant une requête de type DELETE ou de le mettre à jour avec une requête UPDATE.

Enfin, j’aurais très bien pu envoyer une requête POST accompagnée des données nécessaires à l’URI suivante pour créer un nouvel artiste :

dolebrai.net/playlist/artistes/

Pour en savoir plus, je vous renvoie aux nombreuses documentations à ce sujet. Point de vue technologies, nombre de possibilités vous sont offertes : MERB, django-rest, Restlet…

Pour aller plus loin et donner un accès complet aux données du site, on peut également renvoyer les données sous plusieurs formats :

dolebrai.net/playlist/artistes/mr-tac/xml/
=> pour une information bien structurée
dolebrai.net/playlist/artistes/mr-tac/html/
=> pour l'afficher sans traitement
dolebrai.net/playlist/artistes/mr-tac/json/
 => pour une manipulation facile via javascript
dolebrai.net/playlist/artistes/mr-tac/rdf/
 => pour que les moteurs de recherche saisissent le sens des données

La communication entre sites web en ressort facilitée, n’importequel site voulant récupérer les informations sur Mr Tac contenue sur dolebraï.net au format de son choix pourra ainsi le faire.

3. Accès fichier statique

Les fichiers statiques sont aussi des données. Il faut donc aussi qu’ils soient caractérisés par une URI pertinente et qui ne se termine pas par une extension du type .mp3, .html, .xml… On aura par exemple :

dolebrai.net/playlist/artists/mr-tac/releases/my-first-album/tracks/01-my-first-song/file/mp3/
=> fichier 01_myfirstsong.mp3
dolebrai.net/playlist/artists/mr-tac/releases/my-first-album/tracks/01-my-first-song/file/ogg/
=> fichier 01_myfirstsong.ogg
dolebrai.net/playlist/artists/mr-tac/releases/my-first-album/cover/front/
=> fichier myfirstalbum_front.png
dolebrai.net/playlist/artists/mr-tac/
=> artist.html

NB : Le problème d’une telle redirection est qu’on perd le côté instantané du rappatriement d’un fichier statique.

4. Navigation

Le site web se résume à une simple série de fichiers html. D’ailleurs, un seul suffirait. Pour raison de commodité et pour éviter une effet d’opacité comme dans GWT, on préférera plusieurs fichiers HTML décrivant les sections du site. Disons que pour chacun des fichiers templates qu’on aurait créé avec un framework classique , il faudrait un fichier HTML. Ainsi notre redirection serait un peu plus complexe :

dolebrai.net/playlist/artists/mr-tac/
=> artist.html?artist=mr-tac

ou plutôt :

dolebrai.net/playlist/artists/mr-tac/
=> playlist.html?type=artiste&artist=mr-tac

Le layout serait codé en HTML statique et les données seraient fonction des paramètres. Un clic sur un artiste n’entrainerait pas un rechargement complet de la page mais seulement la partie données dynamiques.

Conclusion de la deuxième partie

En résumé, votre interface REST devient le centre de l’application. Que ce soit un intervenant externe ou vos pages AJAX, tout le monde emprunte ce chemin pour accéder aux ressources de votre site web, et ce quel que soit leur type.

Schéma d'une architecture de site web centralisé sur une interface web

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: