title:      Critique du livre RESTful Web Services
slug:       critique-du-livre-restful-web-services
date:       2007-08-30 11:20:14
type:       post
vignette:   images/logos/restful_web_services.png
contextual_title1:  ★ Django-ROA, pour une architecture orientée ressources
contextual_url1:    20090526-django-roa-pour-une-architecture-orientee-ressources
contextual_title2:  ★ De l&#39;OpenData au LinkedData : exemple de nosdonnees.fr
contextual_url2:    20101130-de-lopendata-au-linkeddata-exemple-de-nosdonneesfr
contextual_title3:  ★ Le Web Sémantique ou l&#39;importance des données liées 
contextual_url3:    20081117-le-web-semantique-ou-limportance-des-donnees-liees

<p>Il y a désormais deux livres qui ont vraiment influé sur ma façon de concevoir une application. Le premier est <a href="http://gettingreal.37signals.com/">Getting Real</a> 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 <a href="http://www.crummy.com/writing/RESTful-Web-Services/">RESTful Web Services</a> dont j'ai déjà parlé dans mon billet sur l'<a href="https://larlet.fr/david/biologeek/archives/20070629-architecture-orientee-ressource-pour-faire-des-services-web-restful/">architecture orientée ressource</a> et que j'ai maintenant terminé.</p>

<p>Contrairement à mes <a href="https://larlet.fr/david/biologeek/archives/20060219-critiques-de-livres-aux-editions-eyrolles/">autres critiques de livres</a>, 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 <abbr title="Representational State Transfer">REST</abbr>. Et la bonne nouvelle c'est qu'<a href="https://larlet.fr/david/biologeek/archives/20070629-architecture-orientee-ressource-pour-faire-des-services-web-restful/#c24711">il sort bientôt en français</a> (merci Sebmox) donc vous pourrez <em>vraiment</em> tout comprendre, veinards ;-).</p>


<p>Bon quelques critiques négatives pour faire sérieux quand même&nbsp;:</p>

<ul>
<li>Pour un livre dont le mantra est «&nbsp;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 <a href="http://remiprevost.com/2007/08/date-de-finalisation-de-html5">pas prêt d'être utilisable</a>... 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.</li>
<li>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.</li>
</ul>

<p>Voila, ce sont les seuls bémols que j'ai pu trouver à <strong>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</strong>. Sympa comme investissement non&nbsp;? :-)</p>


<p>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.</p>


<p>Pour terminer et en guise de pense-bête, voici la liste des étapes à retenir pour passer des besoins à leur implémentation&nbsp;:</p>

<ul>
<li>Évaluer les données</li>
<li>Découper les données en ressources</li>
</ul>

<p>Pour chaque type de ressource&nbsp;:</p>

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

<p>Ces étapes ont intégré mes <a href="https://larlet.fr/david/biologeek/archives/20070112-etapes-de-developpement-d-une-application-web/">étapes de conception d'une application web</a> 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.</p>


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


<p>Vous pouvez <a href="https://larlet.fr/david/biologeek/archives/20060219-critiques-de-livres-aux-editions-eyrolles/">consulter l'ensemble de mes critiques de livres</a>.</p>
