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.

преди 5 години
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. <div class="comment" typeof="schema:UserComments">
  2. <p class="comment-meta">
  3. <span class="comment-author" property="schema:creator">Gilles</span> le <span class="comment-date" property="schema:commentTime">30/06/2007</span> :
  4. </p>
  5. <div class="comment-content" property="schema:commentText">
  6. <p>Alors là, chapeau ! Rien à dire. Excellent article. C'est de l'excellent. Très très intéressant, très très bien décrit. C'est du David quoi :) Vraiment merci et bravo. Bon week-end à toi !</p>
  7. </div>
  8. </div>
  9. <div class="comment" typeof="schema:UserComments">
  10. <p class="comment-meta">
  11. <span class="comment-author" property="schema:creator">Eric Daspet</span> le <span class="comment-date" property="schema:commentTime">30/06/2007</span> :
  12. </p>
  13. <div class="comment-content" property="schema:commentText">
  14. <p>&gt; une URI doit être descriptive<br />
  15. <br />
  16. Ca n'est pas une contrainte ou même une recommandation de l'architecture orientée ressource. Du point de vue du navigateur, du serveur, et de la ressource, l'URL est un composant opaque. Cette URL n'est pas &quot;comprise&quot;, elle n'a pas à être descriptive.<br />
  17. <br />
  18. Si l'URL doit être descriptive, c'est uniquement un effet de bord de son positionnement actuel dans les interfaces des navigateurs. On a mis l'URL comme un composant central, accessible et éditable par l'utilisateur. De fait, du coup, l'URL s'échange sous format texte et mérite à être descriptive.<br />
  19. <br />
  20. Dans l'idéal l'humain n'a pas à lire l'URL, il n'a pas à la manipuler. Tout ce qu'il a à faire c'est la stocker (par exemple dans ses favoris), l'échanger et la rappeler. Vu notre monde, le stockage est ou va devenir tout électronique (favoris du navigateur, clé usb, téléphone portable). On devrait pouvoir donc à terme se passer de l'URL descriptive : le dispositif électronique nous présentera le titre de la page, la description texte qu'on y a accolé, le site source ... l'URL n'a plus aucun intérêt du point de vue humain. Même chose pour l'échange. On va y arriver très vite avec les QR Code des téléphones portables.<br />
  21. <br />
  22. Bref, l'URL descriptive est encore nécessaire dans nos pays (ça doit être moins vrai là où le QR Code est développé) mais ça n'est pas lié à l'architecture RESTE, à HTTP ou au Web. C'est juste une problématique d'interface utilisateur qui mérite d'évoluer (et qui le fera à moyen terme).</p>
  23. </div>
  24. </div>
  25. <div class="comment" typeof="schema:UserComments">
  26. <p class="comment-meta">
  27. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">30/06/2007</span> :
  28. </p>
  29. <div class="comment-content" property="schema:commentText">
  30. <p>@Gilles : Merci ! Bon we à toi aussi :-).<br />
  31. <br />
  32. @Eric Daspet : je suis d'accord avec le fait que les URL n'ont pas été faites pour les humains mais force est de constater que c'est rentré dans les mœurs et (presque) tout le monde comprend à peu près ce que ça signifie, principalement grâce au nom donné.<br />
  33. <br />
  34. Du coup, je ne pense pas qu'elles disparaissent de si tôt des interfaces utilisateurs car on n'a pas encore trouvé mieux... remarque on pourrait presque faire un parallèle entre la ligne de commande et les adresses web et celles-ci on presque disparues donc je m'avance un peu.<br />
  35. <br />
  36. Je pense que l'indexation a pris le dessus sur le stockage. Aujourd'hui pour retrouver un favori je cherche pas souvent dans les centaines que j'ai, je le retrouve avec des mots-clés sur un moteur de recherche. C'est d'ailleurs ce qui donne tant (trop !) de puissance aux moteurs de recherche, ils nous guident un peu là où ils ont envie...</p>
  37. </div>
  38. </div>
  39. <div class="comment" typeof="schema:UserComments">
  40. <p class="comment-meta">
  41. <span class="comment-author" property="schema:creator">syntax_error</span> le <span class="comment-date" property="schema:commentTime">01/07/2007</span> :
  42. </p>
  43. <div class="comment-content" property="schema:commentText">
  44. <p>La description des principes est claire, mais j'avoue que j'ai pas compris à quoi ca correspond concrètement en termes de développement. A part éviter les cookies et les sessions, et avoir des urls claires ca manque d'exemples concrets, de modèles ou de comparaisons. <br />
  45. <br />
  46. D'après ce que j'en retire l'idée est que chaque requête doit pouvoir s'exécuter indépendament de tout contexte. Cela semble plus un principe qu'une méthode.</p>
  47. </div>
  48. </div>
  49. <div class="comment" typeof="schema:UserComments">
  50. <p class="comment-meta">
  51. <span class="comment-author" property="schema:creator">Stéphane Bortzmeyer</span> le <span class="comment-date" property="schema:commentTime">01/07/2007</span> :
  52. </p>
  53. <div class="comment-content" property="schema:commentText">
  54. <p>&gt; j'avoue que j'ai pas compris à quoi ca correspond concrètement en <br />
  55. &gt; termes de développement<br />
  56. <br />
  57. J'espère que le petit exemple qui est ici :<br />
  58. <br />
  59. <a href="http://www.bortzmeyer.org/programmation-rest.html" title="http://www.bortzmeyer.org/programmation-rest.html" rel="nofollow">www.bortzmeyer.org/progra...</a><br />
  60. <br />
  61. aidera. Il est tout petit mais fait partie d'un vrai logiciel de gestion de registre (CODEV-NIC).<br />
  62. <br />
  63. &gt; A part éviter les cookies et les sessions, et avoir des urls claires <br />
  64. <br />
  65. C'est déjà pas mal si on fait tout ça !<br />
  66. </p>
  67. </div>
  68. </div>
  69. <div class="comment" typeof="schema:UserComments">
  70. <p class="comment-meta">
  71. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">01/07/2007</span> :
  72. </p>
  73. <div class="comment-content" property="schema:commentText">
  74. <p>@syntax_error : patience les exemples arrivent ;-).<br />
  75. <br />
  76. @Stéphane Bortzmeyer : merci pour le lien.</p>
  77. </div>
  78. </div>
  79. <div class="comment" typeof="schema:UserComments">
  80. <p class="comment-meta">
  81. <span class="comment-author" property="schema:creator">Olivier</span> le <span class="comment-date" property="schema:commentTime">16/07/2007</span> :
  82. </p>
  83. <div class="comment-content" property="schema:commentText">
  84. <p>Bonjour<br />
  85. <br />
  86. Merci pour cet article qui m'a permis de clarifier certaines choses. Je suis un lecteur assidu de ce blog et cette fois-ci, je me lance à rédiger un commentaire ...<br />
  87. <br />
  88. Je suis entièrement convaincu du bien fondé et des avantages de cette architecture, mais n'y-a-t-il pas qq soucis concernant la réalisation concrète de &quot;grosses applications&quot;, je pense en particulier aux performances (reconstituer l'état complet d'un gros système à chaque requête) ... ou encore à la longueur des URLS ... <br />
  89. Pour le REST ;-) , je suis convaincu qu'il n'y aura bientôt plus de &quot;grosses applications&quot; mais simplement une miriade de petites discutant entre elles ... mais en attendant ...<br />
  90. <br />
  91. Merci pour la mine d'info pertinente qu'est ce blog et vivement cette refonte :-) </p>
  92. </div>
  93. </div>
  94. <div class="comment" typeof="schema:UserComments">
  95. <p class="comment-meta">
  96. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">16/07/2007</span> :
  97. </p>
  98. <div class="comment-content" property="schema:commentText">
  99. <p>@Olivier : il ne faut surtout pas être si timide ;-).<br />
  100. <br />
  101. &gt; n'y-a-t-il pas qq soucis concernant la réalisation concrète de &quot;grosses applications&quot;, je pense en particulier aux performances (reconstituer l'état complet d'un gros système à chaque requête) ... <br />
  102. <br />
  103. Au niveau des performances, cela ne change rien si ce n'est qu'une application utilisant cette architecture peut reposer sur le cache HTTP qui a fait ses preuves jusqu'à présent (donc il n'y a pas forcément processing à chaque requête). Il est vrai que les exemples d'applications complexes RESTful sont rares pour l'instant mais mon petit doigt me dit que cela ne va pas durer.<br />
  104. <br />
  105. &gt; ou encore à la longueur des URLS ...<br />
  106. <br />
  107. Une URL peut être très longue <a href="http://www.boutell.com/newfaq/misc/urllength.html" title="http://www.boutell.com/newfaq/misc/urllength.html" rel="nofollow">www.boutell.com/newfaq/mi...</a> mais si l'on considère des imbrications de ressources vraiment importantes (mais alors là on en arriverait à une complexité énorme) ça pourrait en effet poser problème. Pour l'instant je suis jamais arrivé à plus de 6 ressources imbriquées et c'était pour des workflows bien complexes.<br />
  108. <br />
  109. REST n'est donc pas forcément limité aux petites applications même si tous les exemples restent basiques. C'est juste pour expliquer le principe mais on peut faire des choses beaucoup plus attrayantes avec ;-).</p>
  110. </div>
  111. </div>
  112. <div class="comment" typeof="schema:UserComments">
  113. <p class="comment-meta">
  114. <span class="comment-author" property="schema:creator">Sebmox</span> le <span class="comment-date" property="schema:commentTime">17/07/2007</span> :
  115. </p>
  116. <div class="comment-content" property="schema:commentText">
  117. <p>Pour info, le livre mentionné au début par David sort en septembre en version française...<br />
  118. <a href="http://www.oreilly.fr/catalogue/2841774481" title="http://www.oreilly.fr/catalogue/2841774481" rel="nofollow">www.oreilly.fr/catalogue/...</a><br />
  119. <br />
  120. Sinon très très bon article !!</p>
  121. </div>
  122. </div>
  123. <div class="comment" typeof="schema:UserComments">
  124. <p class="comment-meta">
  125. <span class="comment-author" property="schema:creator">Graffiti</span> le <span class="comment-date" property="schema:commentTime">18/07/2007</span> :
  126. </p>
  127. <div class="comment-content" property="schema:commentText">
  128. <p>L'url sert (encore un anagrame de rest) aussi pour le référencement... :) on a tendance à l'oublier</p>
  129. </div>
  130. </div>
  131. <div class="comment" typeof="schema:UserComments">
  132. <p class="comment-meta">
  133. <span class="comment-author" property="schema:creator">Stéphane Bortzmeyer</span> le <span class="comment-date" property="schema:commentTime">25/07/2007</span> :
  134. </p>
  135. <div class="comment-content" property="schema:commentText">
  136. <p>Puisque certains ont été assez indulgents pour apprécier mon premier court article (moins bon que celui de David mais avec plus de code), voici un second :<br />
  137. <br />
  138. <a href="http://www.bortzmeyer.org/rest-sql-unicode-exemple.html" title="http://www.bortzmeyer.org/rest-sql-unicode-exemple.html" rel="nofollow">www.bortzmeyer.org/rest-s...</a><br />
  139. </p>
  140. </div>
  141. </div>
  142. <div class="comment" typeof="schema:UserComments">
  143. <p class="comment-meta">
  144. <span class="comment-author" property="schema:creator">Nicolas Hoizey</span> le <span class="comment-date" property="schema:commentTime">28/11/2007</span> :
  145. </p>
  146. <div class="comment-content" property="schema:commentText">
  147. <p>Excellent article, qui me confirme que nous sommes de plus en plus nombreux à utiliser cette architecture, bravo !!!<br />
  148. <br />
  149. Juste une précision, sans doute non nécessaire pour la plupart des lecteurs, mais bon :<br />
  150. <br />
  151. Tu dis « il n'est pas possible de changer l'adresse du navigateur en JavaScript, excepté les ancres ».<br />
  152. <br />
  153. Il faudrait sans doute modifier ça en « il n'est pas possible de changer l'adresse du navigateur en JavaScript sans provoquer le rechargement de la page, excepté pour les ancres ».</p>
  154. </div>
  155. </div>
  156. <div class="comment" typeof="schema:UserComments">
  157. <p class="comment-meta">
  158. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">28/11/2007</span> :
  159. </p>
  160. <div class="comment-content" property="schema:commentText">
  161. <p>@Nicolas Hoizey : En effet, bonne précision mais JavaScript est souvent utilisé pour palier justement au rechargement de la page actuellement.</p>
  162. </div>
  163. </div>
  164. <div class="comment" typeof="schema:UserComments">
  165. <p class="comment-meta">
  166. <span class="comment-author" property="schema:creator">Nicolas Hoizey</span> le <span class="comment-date" property="schema:commentTime">28/11/2007</span> :
  167. </p>
  168. <div class="comment-content" property="schema:commentText">
  169. <p>Je suis d'accord, je soulignais juste une imprécision pouvant conduire un lecteur à croire une erreur... ;-)</p>
  170. </div>
  171. </div>
  172. <div class="comment" typeof="schema:UserComments">
  173. <p class="comment-meta">
  174. <span class="comment-author" property="schema:creator">étudiant blogueur</span> le <span class="comment-date" property="schema:commentTime">25/11/2008</span> :
  175. </p>
  176. <div class="comment-content" property="schema:commentText">
  177. <p>je pense qu&#39;il y a erreur dans ce qui suit :<br />html ou json par exemple<br />vous voulez dire peut être :<br />html ou js (javascript) par exemple</p>
  178. </div>
  179. </div>
  180. <div class="comment" typeof="schema:UserComments">
  181. <p class="comment-meta">
  182. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">25/11/2008</span> :
  183. </p>
  184. <div class="comment-content" property="schema:commentText">
  185. <p>Non, je parlais bien du format de représentation de données JSON :<br /><a href="http://fr.wikipedia.org/wiki/JavaScript_Object_Notation">http://fr.wikipedia.org/wiki/JavaScript_Object_Notation</a></p>
  186. <p>Il est lié à la base à JavaScript mais ce n&#39;est pas une erreur de ma part :-)</p>
  187. </div>
  188. </div>
  189. <div class="comment" typeof="schema:UserComments">
  190. <p class="comment-meta">
  191. <span class="comment-author" property="schema:creator">étudiant blogueur</span> le <span class="comment-date" property="schema:commentTime">26/11/2008</span> :
  192. </p>
  193. <div class="comment-content" property="schema:commentText">
  194. <p>Ok c&#39;est noté cher blogueur. Même si je suis développeur je n&#39;y avais jamais entendu parlé.<br />PS: wikipedia a déjà accumulé $3 000 000 :-0<br />Merci :)</p>
  195. </div>
  196. </div>
  197. <div class="comment" typeof="schema:UserComments">
  198. <p class="comment-meta">
  199. <span class="comment-author" property="schema:creator">nfroidure</span> le <span class="comment-date" property="schema:commentTime">02/10/2010</span> :
  200. </p>
  201. <div class="comment-content" property="schema:commentText">
  202. <p>Bonjour,</p>
  203. <p>Petit commentaire en réaction à la partie &quot;Sans état&quot;.</p>
  204. <p>Pour un service web qui serait, pour sa majeure partie, accessible de manière privée, les sessions ou cookies me paraissent inévitables.</p>
  205. <p>Il y a peut-être la possibilité de distinguer une ressource privée en signifiant dans l&#39;URI qu&#39;elle est privée. Sur twitter ça donnerai ça :<br /><a href="http://twitter.com/private/nfroidure/settings/account">http://twitter.com/private/nfroidure/settings/account</a><br />au lieu de :<br /><a href="http://twitter.com/settings/account">http://twitter.com/settings/account</a></p>
  206. <p>Quelles sont les pratiques en la matière pour gérée les droits d&#39;accès sur une application RESTful ?</p>
  207. <p>Merci</p>
  208. </div>
  209. </div>