Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. <!doctype html>
  2. <html lang=fr>
  3. <head>
  4. <!-- Always define the charset before the title -->
  5. <meta charset=utf-8>
  6. <title>Critique du livre RESTful Web Services — Biologeek — David Larlet</title>
  7. <!-- Define a viewport to mobile devices to use - telling the browser to assume that the page is as wide as the device (width=device-width) and setting the initial page zoom level to be 1 (initial-scale=1.0) -->
  8. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  9. <!-- Fake favicon, to avoid extra request to the server -->
  10. <link rel="icon" href="data:;base64,iVBORw0KGgo=">
  11. <link type="application/atom+xml" rel="alternate" title="Feed" href="/david/log/" />
  12. <link rel="manifest" href="/manifest.json">
  13. <link rel="stylesheet" href="/static/david/css/larlet-david-_J6Rv.css" data-instant-track />
  14. <noscript>
  15. <style type="text/css">
  16. /* Otherwise fonts are loaded by JS for faster initial rendering. See scripts at the bottom. */
  17. body {
  18. font-family: 'EquityTextB', serif;
  19. }
  20. h1, h2, h3, h4, h5, h6, time, nav a, nav a:link, nav a:visited {
  21. font-family: 'EquityCapsB', sans-serif;
  22. font-variant: normal;
  23. }
  24. </style>
  25. </noscript>
  26. <!-- Canonical URL for SEO purposes -->
  27. <link rel="canonical" href="https://larlet.fr/david/biologeek/archives/20070830-critique-du-livre-restful-web-services">
  28. </head>
  29. <body>
  30. <div>
  31. <header>
  32. <nav>
  33. <p>
  34. <small>
  35. Je suis <a href="/david/" title="Profil public">David Larlet</a>, <a href="/david/pro/" title="Activité professionnelle">artisan</a> du web qui vous <a href="/david/pro/accompagnement/" title="Activité d’accompagnement">accompagne</a><span class="more-infos"> dans l’acquisition de savoirs pour concevoir des <a href="/david/pro/produits-essentiels/" title="Qu’est-ce qu’un produit essentiel ?">produits essentiels</a></span>. <span class="more-more-infos">Discutons ensemble d’une <a href="/david/pro/devis/" title="En savoir plus">non-demande de devis</a>.</span> Je partage ici mes <a href="/david/blog/" title="Expériences bienveillantes">réflexions</a> et <a href="/david/correspondances/2017/" title="Lettres hebdomadaires">correspondances</a>.
  36. </small>
  37. </p>
  38. </nav>
  39. </header>
  40. <section>
  41. <h1 property="schema:name">Critique du livre RESTful Web Services</h1>
  42. <article typeof="schema:BlogPosting">
  43. <div property="schema:articleBody">
  44. <img src="/static/david/biologeek/images/logos/restful_web_services.png" alt="vignette" style="float:left; margin: 0.5em 1em;" property="schema:thumbnailUrl" />
  45. <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>
  46. <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>
  47. <p>Bon quelques critiques négatives pour faire sérieux quand même&nbsp;:</p>
  48. <ul>
  49. <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>
  50. <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>
  51. </ul>
  52. <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>
  53. <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>
  54. <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>
  55. <ul>
  56. <li>Évaluer les données</li>
  57. <li>Découper les données en ressources</li>
  58. </ul>
  59. <p>Pour chaque type de ressource&nbsp;:</p>
  60. <ul>
  61. <li>Nommer la ressource avec une URI</li>
  62. <li>Déterminer les verbes utilisables de l'interface uniforme</li>
  63. <li>Définir les représentations acceptées de la part du client</li>
  64. <li>Définir les représentation servies au client</li>
  65. <li>Intégrer cette ressource au ressources existantes, en utilisant les liens et les formulaires</li>
  66. <li>Traiter le cheminement usuel&nbsp;: qu'est ce qui est supposé se produire&nbsp;?</li>
  67. <li>Traiter les erreurs&nbsp;: que faire lorsque ça ne va pas&nbsp;?</li>
  68. </ul>
  69. <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>
  70. <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>
  71. <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>
  72. </div>
  73. </article>
  74. <footer>
  75. <h6 property="schema:datePublished">— 30/08/2007</h6>
  76. </footer>
  77. </section>
  78. <section>
  79. <div>
  80. <h3>Articles peut-être en rapport</h3>
  81. <ul>
  82. <li><a href="/david/biologeek/archives/20090526-django-roa-pour-une-architecture-orientee-ressources/" title="Accès à ★ Django-ROA, pour une architecture orientée ressources">★ Django-ROA, pour une architecture orientée ressources</a></li>
  83. <li><a href="/david/biologeek/archives/20101130-de-lopendata-au-linkeddata-exemple-de-nosdonneesfr/" title="Accès à ★ De l&#39;OpenData au LinkedData : exemple de nosdonnees.fr">★ De l&#39;OpenData au LinkedData : exemple de nosdonnees.fr</a></li>
  84. <li><a href="/david/biologeek/archives/20081117-le-web-semantique-ou-limportance-des-donnees-liees/" title="Accès à ★ Le Web Sémantique ou l&#39;importance des données liées">★ Le Web Sémantique ou l&#39;importance des données liées</a></li>
  85. </ul>
  86. </div>
  87. </section>
  88. <section>
  89. <div id="comments">
  90. <h3>Commentaires</h3>
  91. <div class="comment" typeof="schema:UserComments">
  92. <p class="comment-meta">
  93. <span class="comment-author" property="schema:creator">Rémi Prévost</span> le <span class="comment-date" property="schema:commentTime">30/08/2007</span> :
  94. </p>
  95. <div class="comment-content" property="schema:commentText">
  96. <p>Cela semble très intéressant comme livre ! Les deux auteurs (Leonard Richardson et Sam Ruby) ne sont pas n'importe qui non plus ;)</p>
  97. </div>
  98. </div>
  99. <div class="comment" typeof="schema:UserComments">
  100. <p class="comment-meta">
  101. <span class="comment-author" property="schema:creator">Henry Story</span> le <span class="comment-date" property="schema:commentTime">30/08/2007</span> :
  102. </p>
  103. <div class="comment-content" property="schema:commentText">
  104. <p>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:<br />
  105. <a href="http://blogs.sun.com/bblfish/entry/restful_web_services_the_book" title="http://blogs.sun.com/bblfish/entry/restful_web_services_the_book" rel="nofollow">blogs.sun.com/bblfish/ent...</a><br />
  106. <br />
  107. Pour une illustration positive voire mon autre article<br />
  108. <a href="http://blogs.sun.com/bblfish/entry/restful_semantic_web_services" title="http://blogs.sun.com/bblfish/entry/restful_semantic_web_services" rel="nofollow">blogs.sun.com/bblfish/ent...</a><br />
  109. <br />
  110. 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.</p>
  111. </div>
  112. </div>
  113. <div class="comment" typeof="schema:UserComments">
  114. <p class="comment-meta">
  115. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">30/08/2007</span> :
  116. </p>
  117. <div class="comment-content" property="schema:commentText">
  118. <p>@Rémi Prévost : oui je parle rarement des auteurs mais en effet il s'agit de pointures dans le domaine :-).<br />
  119. <br />
  120. @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...<br />
  121. <br />
  122. Merci pour l'illustration du second lien, vraiment intéressant.</p>
  123. </div>
  124. </div>
  125. <div class="comment" typeof="schema:UserComments">
  126. <p class="comment-meta">
  127. <span class="comment-author" property="schema:creator">Neovov</span> le <span class="comment-date" property="schema:commentTime">01/09/2007</span> :
  128. </p>
  129. <div class="comment-content" property="schema:commentText">
  130. <p>Merci pour cette critique, je l'attends impatiemment en français :)</p>
  131. </div>
  132. </div>
  133. <div class="comment" typeof="schema:UserComments">
  134. <p class="comment-meta">
  135. <span class="comment-author" property="schema:creator">Amirouche B.</span> le <span class="comment-date" property="schema:commentTime">02/09/2007</span> :
  136. </p>
  137. <div class="comment-content" property="schema:commentText">
  138. <p>Medium ? je sais pas ton article tombe pil poil.<br />
  139. <br />
  140. 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.</p>
  141. </div>
  142. </div>
  143. <div class="comment" typeof="schema:UserComments">
  144. <p class="comment-meta">
  145. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">02/09/2007</span> :
  146. </p>
  147. <div class="comment-content" property="schema:commentText">
  148. <p>@Amirouche B. : content d'avoir pu rendre service, concernant le GSoC je suis en plein dedans et c'est très bon !</p>
  149. </div>
  150. </div>
  151. <div class="comment" typeof="schema:UserComments">
  152. <p class="comment-meta">
  153. <span class="comment-author" property="schema:creator">Alexandre Morgaut</span> le <span class="comment-date" property="schema:commentTime">06/12/2008</span> :
  154. </p>
  155. <div class="comment-content" property="schema:commentText">
  156. <p>J&#39;ai été également un peu frustré par l&#39;utilisation de HTML5, et je suis d&#39;accord qu&#39;il y a des répétition, a tel point que lorsque l&#39;on veut retrouver un passage intéressant, on ne sait plus où aller...</p>
  157. <p>A noter en point interessants :<br /> - Les propositions de règles d&#39;écriture d&#39;URL et la référence à la spec &quot;URI Template&quot;<br /> - Les méthodes de &quot;tourne-autour&quot; pour les clients web ne supportant pas &quot;PUT&quot; &quot;DELETE&quot; et autres...<br /> - La reference à WADL</p>
  158. <p>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&#39;intérêt apporté au XHTML apportait tout de même un début d&#39;idée de sémantique en y associant le Dublin Core</p>
  159. <p>Pour ce qui est de référence à la spec &quot;POE&quot; (Post Once Exactly) je l&#39;ai trouvée interessante, mais réinventant la roue le HTTP proposant déjà un Etag.</p>
  160. </div>
  161. </div>
  162. </div>
  163. </section>
  164. <footer>
  165. <nav>
  166. <p>
  167. <small>
  168. Je réponds quasiment toujours aux <a href="m&#x61;ilto:d&#x61;vid%40l&#x61;rlet&#46;fr" title="Envoyer un email">emails</a> (<a href="/david/signature/" title="Ma signature actuelle avec possibilité de chiffrement">signés</a>) et vous pouvez me rencontrer à Montréal. <span class="more-infos">N’hésitez pas à <a href="/david/log/" title="Être tenu informé des mises à jour">vous abonner</a> pour être tenu informé des publications récentes.</span>
  169. </small>
  170. </p>
  171. </nav>
  172. </footer>
  173. </div>
  174. <script src="/static/david/js/larlet-david-3ee43f.js" data-no-instant></script>
  175. <script data-no-instant>InstantClick.init()</script>
  176. </body>
  177. </html>