# Critique du livre RESTful Web Services

Il y a désormais deux livres qui ont vraiment influé sur ma façon de concevoir une application. Le premier est Getting Real dont je n'ai jamais fait la critique mais qui est vraiment à lire et à relire (et à offrir à vos collègues de travail s'ils ont encore suffisamment de curiosité pour évoluer). Le second est RESTful Web Services dont j'ai déjà parlé dans mon billet sur l'architecture orientée ressource et que j'ai maintenant terminé.

Contrairement à mes autres critiques de livres, celle-ci va être très courte. C'est dans le cas présent un bon signe, ce livre est tout simplement LA référence si vous voulez comprendre et implémenter REST. Et la bonne nouvelle c'est qu'il sort bientôt en français (merci Sebmox) donc vous pourrez vraiment tout comprendre, veinards ;-).

Bon quelques critiques négatives pour faire sérieux quand même :

- Pour un livre dont le mantra est « Web Services for the Real World », il est dommage d'avoir recours à HTML5 dans les exemples pour palier aux insuffisances des navigateurs actuels (pour les PUT et DELETE) qui n'est pas prêt d'être utilisable... J'aurais préféré une bonne pratique fixée une bonne fois pour toute, heureusement que les exemples de la fin compensent cette faiblesse.
- Il y a parfois des redites (ou alors je l'ai lu trop vite !) mais elles sont peut-être utiles pour quelqu'un qui découvre véritablement REST. La partie pour convaincre est néanmoins très intéressante.

Voila, ce sont les seuls bémols que j'ai pu trouver à cet ouvrage qui est la référence à avoir dans sa bibliothèque si vous souhaitez développer des applications web au cours des 5 prochaines années. Sympa comme investissement non ? :-)

La cerise sur le gâteau, c'est si vous êtes développeur Rails ou Django car des exemples concrets vous permettent d'utiliser l'architecture orientée ressource avec votre framework de prédilection.

Pour terminer et en guise de pense-bête, voici la liste des étapes à retenir pour passer des besoins à leur implémentation :

- Évaluer les données
- Découper les données en ressources

Pour chaque type de ressource :

- Nommer la ressource avec une URI
- Déterminer les verbes utilisables de l'interface uniforme
- Définir les représentations acceptées de la part du client
- Définir les représentation servies au client
- Intégrer cette ressource au ressources existantes, en utilisant les liens et les formulaires
- Traiter le cheminement usuel : qu'est ce qui est supposé se produire ?
- Traiter les erreurs : que faire lorsque ça ne va pas ?

Ces étapes ont intégré mes étapes de conception d'une application web et pour l'instant ça marche plutôt bien. Selon l'application, il faut bien sûr ajouter la notion de permissions utilisateur, je l'introduis généralement au moment de la détermination des verbes de l'interface uniforme.

Finalement pour un billet qui devait faire 3 lignes, je me suis laissé emporté par mon engouement et je finirais donc très sobrement : bonne lecture !

Vous pouvez consulter l'ensemble de mes critiques de livres.

### Articles peut-être en rapport

- ★ Django-ROA, pour une architecture orientée ressources
- ★ De l'OpenData au LinkedData : exemple de nosdonnees.fr
- ★ Le Web Sémantique ou l'importance des données liées

### Commentaires

Rémi Prévost le 30/08/2007 :

Cela semble très intéressant comme livre ! Les deux auteurs (Leonard Richardson et Sam Ruby) ne sont pas n'importe qui non plus ;)

Henry Story le 30/08/2007 :

C'est un tres bon livre pour le cote Web 2.0. Mais il ne fait pas justice du tout au aspects Web 3.0 qui poussent l'architecture oriente resource beaucoup plus loin. C'est domage parce que les technologies Web 3.0 - le Web Semantique essentiellement - peuvent beaucoup simplifier la creation de representation pour le client. Je develope cette critique en anglais ici:
blogs.sun.com/bblfish/ent...
Pour une illustration positive voire mon autre article
blogs.sun.com/bblfish/ent...
La premiere partie de l'article est tres simple a implementer. Dans la seconde partie, qui est plus un debut de plan de recherche, je montre jusque ou cela peut mener.

David, biologeek le 30/08/2007 :

@Rémi Prévost : oui je parle rarement des auteurs mais en effet il s'agit de pointures dans le domaine :-).
@Henry Story : je suis bien d'accord sur le fait qu'il manque RDF dans ce livre ! Peut-être est-ce trop complet pour tenir dans un tel ouvrage et qu'ils ont préféré s'abstenir et/ou nous écrire un second livre complétant celui-ci ? Ça serait une excellente nouvelle...
Merci pour l'illustration du second lien, vraiment intéressant.

Neovov le 01/09/2007 :

Merci pour cette critique, je l'attends impatiemment en français :)

Amirouche B. le 02/09/2007 :

Medium ? je sais pas ton article tombe pil poil.
En passant Django REST interface, resultat du GSoC 2007 (lien avec le commentaire). Je ne l'ai pas encore utiliser mais cela va rendre plus accessible la techno REST.

David, biologeek le 02/09/2007 :

@Amirouche B. : content d'avoir pu rendre service, concernant le GSoC je suis en plein dedans et c'est très bon !

Alexandre Morgaut le 06/12/2008 :

J'ai été également un peu frustré par l'utilisation de HTML5, et je suis d'accord qu'il y a des répétition, a tel point que lorsque l'on veut retrouver un passage intéressant, on ne sait plus où aller...

A noter en point interessants :
- Les propositions de règles d'écriture d'URL et la référence à la spec "URI Template"
- Les méthodes de "tourne-autour" pour les clients web ne supportant pas "PUT" "DELETE" et autres...
- La reference à WADL

Je regrette en revanche le manque de développement autour de 2 points qui me semblent essentiels pour le futur, la négociation de contenu et le Web sémantique (je rejoint Henri sur ce point). L'intérêt apporté au XHTML apportait tout de même un début d'idée de sémantique en y associant le Dublin Core

Pour ce qui est de référence à la spec "POE" (Post Once Exactly) je l'ai trouvée interessante, mais réinventant la roue le HTTP proposant déjà un Etag.