<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Aeon Consulting : Together, let&#039;s cross the sky &#187; REST</title>
	<atom:link href="http://www.aeon-consulting.fr/fr/blog/tag/rest/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.aeon-consulting.fr</link>
	<description></description>
	<lastBuildDate>Fri, 30 Apr 2010 00:32:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Aeon Consulting publie les tarifs de toutes ses formations</title>
		<link>http://www.aeon-consulting.fr/fr/blog/2009/09/23/aeon-consulting-publishes-prices-all-training-sessions/</link>
		<comments>http://www.aeon-consulting.fr/fr/blog/2009/09/23/aeon-consulting-publishes-prices-all-training-sessions/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 16:16:28 +0000</pubDate>
		<dc:creator>Aeon Consulting</dc:creator>
				<category><![CDATA[Training]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[EJB]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[RDA]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[RMA]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[WS-*]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XSL]]></category>

		<guid isPermaLink="false">http://www.aeon-consulting.fr/?p=290</guid>
		<description><![CDATA[Nous avons mis en ligne les tarifs de toutes nos formations : voir notre catalogue.
Dans un souci d&#8217;être toujours plus compétitifs tout en répondant à vos attentes, vous pourrez constater que nous vous avons réservé des promotions sur certaines formations.
N’hésitez pas à nous contacter pour tout complément : sur votre demande, nous pouvons mettre sur [...]]]></description>
			<content:encoded><![CDATA[<p>Nous avons mis en ligne les tarifs de toutes nos formations : voir <a href="http://www.aeon-consulting.fr/fr/training/">notre catalogue</a>.</p>
<p>Dans un souci d&#8217;être toujours plus compétitifs tout en répondant à vos attentes, vous pourrez constater que nous vous avons réservé des promotions sur certaines formations.</p>
<p>N’hésitez pas à <a href="/fr/contact/">nous contacter</a> pour tout complément : sur votre demande, nous pouvons mettre sur pied tous types de formations.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeon-consulting.fr/fr/blog/2009/09/23/aeon-consulting-publishes-prices-all-training-sessions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lancement des Formations Aeon Consulting</title>
		<link>http://www.aeon-consulting.fr/fr/blog/2009/07/28/aeon-consulting-launches-training-activities/</link>
		<comments>http://www.aeon-consulting.fr/fr/blog/2009/07/28/aeon-consulting-launches-training-activities/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 14:25:22 +0000</pubDate>
		<dc:creator>Aeon Consulting</dc:creator>
				<category><![CDATA[Training]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[EJB]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[RDA]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[RMA]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[WS-*]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XSL]]></category>

		<guid isPermaLink="false">http://www.aeon-consulting.fr/?p=208</guid>
		<description><![CDATA[Nous avons le plaisir de vous annoncer le lancement des formations Aeon Consulting.
Nous animons nos formations dans des contextes inter-entreprises et intra-entreprises et notre catalogue est réparti selon nos thèmes clés :

Thème &#171;&#160;Applications Riches&#187;&#160;

Rich Internet Applications (RIA)
Rich Desktop Applications (RDA)
Rich Mobile Applications (RMA)


Thème &#171;&#160;Architectures Applicatives&#187;&#160;

Développement Java/JEE
Développement C#/.NET
Sujets transverses


Thème &#171;&#160;Méthodes et Outils&#187;&#160;

Conception et modélisation
Méthodologies



Voici les dates [...]]]></description>
			<content:encoded><![CDATA[<p>Nous avons le plaisir de vous annoncer le lancement des <a href="/fr/training/">formations Aeon Consulting</a>.</p>
<p>Nous animons nos formations dans des contextes inter-entreprises et intra-entreprises et notre <a href="/fr/training/">catalogue</a> est réparti selon nos thèmes clés :</p>
<ul>
<li><strong>Thème &laquo;&nbsp;Applications Riches&raquo;&nbsp;</strong>
<ul>
<li>Rich Internet Applications (RIA)</li>
<li>Rich Desktop Applications (RDA)</li>
<li>Rich Mobile Applications (RMA)</li>
</ul>
</li>
<li><strong>Thème &laquo;&nbsp;Architectures Applicatives&raquo;&nbsp;</strong>
<ul>
<li>Développement Java/JEE</li>
<li>Développement C#/.NET</li>
<li>Sujets transverses</li>
</ul>
</li>
<li><strong>Thème &laquo;&nbsp;Méthodes et Outils&raquo;&nbsp;</strong>
<ul>
<li>Conception et modélisation</li>
<li>Méthodologies</li>
</ul>
</li>
</ul>
<p>Voici les dates des premières formations planifiées :</p>
<p><span id="more-208"></span></p>
<ul>
<li>21 septembre 2009 : <a href="/fr/training/r-iph/">Développement iPhone et iPod Touch [R-IPH]</a>
<ul>
<li><span style="color: #ff0000;">Formation animée par François GOLDGEWICHT, Consultant Senior et Directeur Technique d&#8217;Aeon Consulting, qui a développé et distribué plusieurs applications iPhone à succès</span></li>
<li><span style="color: #ff0000;">Un iPod Touch offert à chaque participant à l&#8217;issue de cette formation !</span></li>
</ul>
</li>
<li>05 octobre 2009 : <a href="/fr/training/a-spr/">Développement Spring 3.0 [A-SPR]</a></li>
<li>19 octobre 2009 : <a href="/fr/training/r-iphi/">Introduction au développement iPhone et iPod Touch [R-IPHI]</a></li>
<li>09 novembre 2009 : <a href="/fr/training/a-rsti/">Introduction à REST [A-RSTI]</a></li>
<li>16 novembre 2009 : <a href="/fr/training/r-pan/">Panorama des styles et technologies RIA [R-PAN]</a></li>
<li>23 novembre 2009 : <a href="/fr/training/a-cldi/">Introduction au Cloud Computing [A-CLDI]</a></li>
<li>30 novembre 2009 : <a href="/fr/training/r-iph/">Développement iPhone et iPod Touch [R-IPH]</a>
<ul>
<li><span style="color: #ff0000;">Voir session du 21 septembre 2009</span></li>
</ul>
</li>
<li>07 décembre 2009 : <a href="/fr/training/a-spr/">Développement Spring 3.0 [A-SPR]</a></li>
<li>04 janvier 2010 : <a href="/fr/training/r-iphi/">Introduction au développement iPhone et iPod Touch [R-IPHI]</a></li>
<li>11 janvier 2010 : <a href="/fr/training/a-rsti/">Introduction à REST [A-RSTI]</a></li>
<li>18 janvier 2010 : <a href="/fr/training/r-pan/">Panorama des styles et technologies RIA [R-PAN]</a></li>
<li>25 janvier 2010 : <a href="/fr/training/a-cldi/">Introduction au Cloud Computing [A-CLDI]</a></li>
</ul>
<p>Vous pouvez découvrir la description de nos formations, notre catalogue ainsi que les modalités d&#8217;inscription sur la page dédiée : <a href="/fr/training/">Formations</a>.</p>
<p>N’hésitez pas à <a href="/fr/contact/">nous contacter</a> pour tout complément : sur votre demande, nous pouvons mettre sur pied tous types de formations.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeon-consulting.fr/fr/blog/2009/07/28/aeon-consulting-launches-training-activities/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comprendre REST, partie 3 : Adressabilité</title>
		<link>http://www.aeon-consulting.fr/fr/blog/2009/07/21/comprendre-rest-partie-3-adressabilite/</link>
		<comments>http://www.aeon-consulting.fr/fr/blog/2009/07/21/comprendre-rest-partie-3-adressabilite/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 07:17:30 +0000</pubDate>
		<dc:creator>François Goldgewicht</dc:creator>
				<category><![CDATA[Carnets de Vol IT]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://www.aeon-consulting.fr/?p=164</guid>
		<description><![CDATA[Nous venons tout juste de définir la notion d&#8217;URI et les problématiques inhérentes. Nous pouvons donc dire quelques mots sur la notion d&#8217;Adressabilité.

Notion d&#8217;Adressabilité
Il s&#8217;agit d&#8217;une notion assez simple à appréhender. On peut d&#8217;abord définir l&#8217;Adressabilité de la manière suivante, comme Leonard Richardson et Sam Ruby dans leur excellent ouvrage RESTful Web Services : une [...]]]></description>
			<content:encoded><![CDATA[<p>Nous <a href="http://www.aeon-consulting.fr/blog/2009/07/21/comprendre-rest-partie-2-uri/">venons tout juste</a> de définir la notion d&#8217;URI et les problématiques inhérentes. Nous pouvons donc dire quelques mots sur la notion d&#8217;<strong>Adressabilité</strong>.</p>
<p><span id="more-164"></span></p>
<h2><img title="More..." src="http://www.aeon-consulting.fr/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" />Notion d&#8217;Adressabilité</h2>
<p>Il s&#8217;agit d&#8217;une notion assez simple à appréhender. On peut d&#8217;abord définir l&#8217;Adressabilité de la manière suivante, comme Leonard Richardson et Sam Ruby dans leur excellent ouvrage <a href="http://oreilly.com/catalog/9780596529260/" target="_blank">RESTful Web Services</a> : une application adressable est une application qui présente ses informations &laquo;&nbsp;intéressantes&raquo;&nbsp; en tant que Ressources. En effet, alors, chacune de ces informations possède un URI, et cet URI la rend accessible.</p>
<p>On ne le rappellera jamais assez : <strong>peut être une ressource</strong> <strong>tout objet assez important pour être référencé en tant que tel</strong>. La capacité d&#8217;une Ressource à être référencée la rend &laquo;&nbsp;adressable&raquo;&nbsp;. Dans quel but ? Le document <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html" target="_blank">URIs, Addressability, and the use of HTTP GET and POST</a> du Technical Architecture Group du W3C nous donne une réponse typiquement dans la lignée de la philosophie RESTienne :</p>
<blockquote><p>&laquo;&nbsp;we can refer to things [...], access them, describe them, and share them. Providing a URI for a resource affords many advantages, including: linking, bookmarking, caching&raquo;&nbsp;</p></blockquote>
<p>A force d&#8217;en profiter quotidiennement dans le Web qu&#8217;on connaît &#8211; et parfois, de manière transparente, ces apports peuvent avoir l&#8217;air banal mais ils sont fondamentaux. Plus généralement, référencer des Ressources par de simples identifiants <strong>permet de s&#8217;affranchir des différences entre langages et plateformes</strong>. C&#8217;est là que le &laquo;&nbsp;U&raquo;&nbsp; de &laquo;&nbsp;URI&raquo;&nbsp;, pour &laquo;&nbsp;Uniform&raquo;&nbsp; , prend tout son sens :</p>
<blockquote><p>&laquo;&nbsp;Great multiplicative power of reuse derives from the fact that all languages use URIs as identifiers: This allows things written in one language to refer to things defined in another language. [...] In this finding, the term &#8216;URI addressability&#8217; means that a URI alone is sufficient for an agent to carry out a particular type of interaction.&raquo;&nbsp;</p></blockquote>
<p>Il devient en effet facile de <strong>créer des liens vers ces identifiants afin d&#8217;opérer des actions sur les Ressources</strong> référencées. Cette simplicité est l&#8217;un des facteurs clés du succès du Web que nous connaissons.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeon-consulting.fr/fr/blog/2009/07/21/comprendre-rest-partie-3-adressabilite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comprendre REST, partie 2 : URI</title>
		<link>http://www.aeon-consulting.fr/fr/blog/2009/07/21/comprendre-rest-partie-2-uri/</link>
		<comments>http://www.aeon-consulting.fr/fr/blog/2009/07/21/comprendre-rest-partie-2-uri/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 00:11:36 +0000</pubDate>
		<dc:creator>François Goldgewicht</dc:creator>
				<category><![CDATA[Carnets de Vol IT]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://www.aeon-consulting.fr/?p=140</guid>
		<description><![CDATA[Les Carnets de Vol continuent ! Le premier post de cette série consacrée à REST nous a permis de définir la notion de Ressource. Ce deuxième post est consacré à la notion d&#8217;URI, ou Uniform Resource Identifier.

Notion d&#8217;URI
On peut définir simplement un URI comme étant à la fois le nom et l&#8217;adresse d&#8217;une Ressource. En effet, [...]]]></description>
			<content:encoded><![CDATA[<p>Les Carnets de Vol continuent ! Le <a href="http://www.aeon-consulting.fr/fr/blog/2009/07/08/comprendre-rest-partie-1-ressource/">premier post</a> de cette série consacrée à REST nous a permis de définir la notion de Ressource. Ce deuxième post est consacré à la notion d&#8217;<strong>URI</strong>, ou <strong>Uniform Resource Identifier</strong>.</p>
<p><span id="more-140"></span></p>
<h2>Notion d&#8217;URI</h2>
<p>On peut définir simplement un <strong>URI </strong>comme étant à la fois <strong>le nom et l&#8217;adresse d&#8217;une Ressource</strong>. En effet, comme nous l&#8217;indique Roy Fielding dans <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" target="_blank">sa thèse où il définit REST</a> :</p>
<blockquote><p>&laquo;&nbsp;Resource identifier [allows] to identify the particular resource involved in an interaction between components&raquo;&nbsp;</p></blockquote>
<p>En effet, rappelons la définition de Ressource que nous avons donnée dans le <a href="http://www.aeon-consulting.fr/fr/blog/2009/07/08/comprendre-rest-partie-1-ressource/">post précédent</a> : peut être une ressource tout objet assez important pour être référencé en tant que tel. Dans cette optique, <strong>l&#8217;URI d&#8217;une Ressource est justement le moyen de référencer cette Ressource</strong>.</p>
<p>Un URI identifie une Ressource donc n&#8217;est rattaché qu&#8217;à cette seule Ressource. Mais une Ressource peut être rattachée à plusieurs URI. En pratique, on essaie tout de même de limiter le nombre d&#8217;URI rattachés à une Ressource afin de ne pas réduire leur valeur.</p>
<p>Et voilà, à ce stade, nous pourrions <em>presque </em>terminer ce post. Mais nous constatons souvent des confusions autour de cette notion qui est bien plus complexe qu&#8217;elle ne paraît, en particulier dans <strong>ce qui caractérise la relation entre un URI et sa Ressource</strong>.</p>
<h2>Persistance des URI</h2>
<p>Voici un premier sujet de confusions. La recommandation <a id="jh27" title="&quot;Architecture of the World Wide Web, Volume One&quot;" href="http://www.w3.org/TR/webarch/">« Architecture of the World Wide Web, Volume One»</a> du W3C, co-rédigée par Roy Fielding, nous explique l&#8217;importance de la notion de <strong>persistance des URI</strong>, dont elle donne une définition :</p>
<blockquote><p><em>&laquo;&nbsp;the term URI persistence is used to describe the desirable property that, once associated with a resource, a URI should continue indefinitely to refer to that resource&raquo;&nbsp;</em></p></blockquote>
<p>Cette règle est simple : <strong>les URI doivent être affectés durablement</strong>.</p>
<p>Ce principe est cependant parfois mal compris. Ainsi, on peut parfois lire ou entendre qu&#8217;il y a un cas intéressant de non respect de cette règle :</p>
<ul>
<li>l&#8217;URI http://www.aeon-consulting.fr/an-application/1.0 pointe vers la Ressource &laquo;&nbsp;Version 1.0 de l&#8217;application &#8216;an application&#8217;&raquo;&nbsp; de manière définitive</li>
<li>l&#8217;URI http://www.aeon-consulting.fr/an-application/last pointe vers la Ressource &laquo;&nbsp;Dernière version de l&#8217;application &#8216;an application&#8217;&raquo;&nbsp;, qui peut correspondre de manière temporaire à la Ressource précédente (tant que la version 1.0 de l&#8217;application est la version la plus récente).</li>
</ul>
<p>Il s&#8217;agirait là d&#8217;une utilisation pertinente d&#8217;un URI non persistant. Cette vision est erronée car la Ressource &laquo;&nbsp;Dernière version de l&#8217;application &#8216;an application&#8217;&raquo;&nbsp; n&#8217;est pas la même que la Ressource &laquo;&nbsp;Version 1.0 de l&#8217;application &#8216;an application&#8217;&raquo;&nbsp; : il s&#8217;agit de deux objets distincts. La confusion vient simplement du fait que temporairement, ces deux URI permettent de récupérer deux représentations identiques.</p>
<p>Notons que si nécessaire, le protocole HTTP fournit les mécanismes de redirection qui permettent d&#8217;indiquer aux agents que l&#8217;URI d&#8217;une Ressource a changé (via les codes 3XX des réponses HTTP).</p>
<h2>Signification des URI</h2>
<h3>Signification des URI et état des Ressources</h3>
<p><span style="text-decoration: underline;"><strong>Utilisation d&#8217;URI significatifs, ou transparents</strong></span></p>
<p>Dans le Web que nous utilisons tous les jours, on trouve fréquemment des URI significatifs : en effet, la connaissance de l&#8217;URI d&#8217;une Ressource parente nous permet (presque !) de retrouver les URI des Ressources filles qui nous intéressent. Il est donc naturel de suggérer pour nos Ressources des URI structurés, significatifs et descriptifs, voire même prévisibles.</p>
<p>Voici à titre d&#8217;exemple l&#8217;URI d&#8217;un article de ce blog, très significatif pusqu&#8217;il porte la date et le titre de l&#8217;article :</p>
<blockquote>
<p style="text-align: center;">http://&#8230;/blog/2009/07/08/comprendre-rest-partie-1-ressource/</p>
</blockquote>
<p><span style="text-decoration: underline;"><strong>Utilisation d&#8217;URI non significatifs, ou opaques</strong></span></p>
<p>La même recommandation du W3C nous indique qu&#8217;un URI n&#8217;est pas nécessairement significatif :</p>
<blockquote><p>&laquo;&nbsp;The choice of syntax for global identifiers is somewhat arbitrary, it is their global scope that is important&raquo;&nbsp;</p></blockquote>
<p>Il s&#8217;agit du <strong>principe d&#8217;opacité des URI</strong> : un URI est un identifiant, <strong>il sert uniquement à identifier une Ressource pour permettre de la référencer</strong>. Il ne doit <strong>pas servir à donner des informations sur l&#8217;état de la Ressource</strong>, ce sont les Représentations de la Ressource qui jouent ce rôle, comme nous l&#8217;indique ce même document :</p>
<blockquote><p>&laquo;&nbsp;It is tempting to guess the nature of a resource by inspection of a URI that identifies it. However, the Web is designed so that agents communicate resource information state through representations, not identifiers&raquo;&nbsp;</p></blockquote>
<p>Nous reviendrons ultérieurement sur la notion de Représentation. Voici à titre d&#8217;exemple une version opaque de l&#8217;URI de notre article de blog :</p>
<blockquote>
<p style="text-align: center;">http://&#8230;/blog/126/</p>
</blockquote>
<p>Cet URI est opaque car il porte un identifiant technique et non plus la date et le titre de l&#8217;article (qui sont des informations sur l&#8217;état de la Ressource article, qui peuvent en outre évoluer et donc violer la règle de persistance énoncée précédemment).</p>
<p><span style="text-decoration: underline;"><strong>Un peu de recul&#8230;</strong></span></p>
<p>Mais alors, que choisir entre URI significatifs et URI opaques ? En fait REST n&#8217;interdit pas l&#8217;utilisation d&#8217;URI significatifs, la contrainte est uniquement dans le fait qu&#8217;une Ressource doit avoir un identifiant. Le choix entre opacité et transparence des URI est et restera un sujet subjectif. Bien souvent, c&#8217;est la sémantique que l&#8217;on souhaite mettre en place dans la construction des URI qui permettra de faire un choix.</p>
<h3>Signification des URI et format de Représentation des Ressources</h3>
<p>Un URI ne doit <strong>pas servir à donner des informations sur le format de représentation de la Ressource</strong> :</p>
<blockquote><p><em>&laquo;&nbsp;In general, one cannot determine the type of a resource representation by inspecting a URI for that resource. For example, the &#8216;.html&#8217; at the end of &#8216;http://example.com/page.html&#8217; provides no guarantee that representations of the identified resource will be served with the Internet media type &#8216;text/html&#8217;. The publisher is free to allocate identifiers and define how they are served&raquo;&nbsp;</em></p></blockquote>
<p>En effet, ce rôle est notamment assuré par la Négociation de contenu, qui fera l&#8217;objet d&#8217;un post ultérieur. Cette règle très importante n&#8217;est pas intuitive car elle n&#8217;est pas respectée par la plupart des URI que l&#8217;on manipule quotidiennement sur le Web.</p>
<h3>Signification des URI et actions opérées sur les Ressources</h3>
<p>De la même manière, un URI ne doit <strong>pas servir à donner des informations sur les actions opérées sur les Ressources</strong> : c&#8217;est la méthode HTTP qui joue ce rôle, comme nous le verrons dans un post ultérieur dédié à la notion d&#8217;Interface uniforme. Là encore, cette règle très importante n&#8217;est pas intuitive car elle non plus n&#8217;est pas respectée par la plupart des URI que l&#8217;on manipule quotidiennement sur le Web.</p>
<h2>Syntaxe des URI</h2>
<p>Sur ce point, REST n&#8217;impose rien explicitement. Cependant, les règles suivantes de syntaxe sont souvent mises en œuvre :</p>
<ul>
<li>utilisation du caractère &#8216;/&#8217; pour aller du niveau le plus général au niveau le plus spécifique : /Dossier1/Fichier2 par exemple</li>
<li>utilisation du caractère &#8216;,&#8217; pour indiquer des éléments ordonnés : /coordonnees/43.55197,1.489613 par exemple</li>
<li>utilisation du caractère &#8216;;&#8217; pour indiquer des éléments non ordonnés : /couleurs/bleu;vert par exemple</li>
<li>utilisation des caractères &#8216;?&#8217; et &#8216;&amp;&#8217; pour indiquer des paramètres, souvent pour des Ressources générées dynamiquement : /search?q=aeon&amp;hl=fr</li>
</ul>
<p>Ajoutons que la limitation de la taille des URI à 256 caractères est loin derrière nous : les serveurs ont aujourd&#8217;hui des limitations de quelques milliers de caractères.</p>
<h2>Mais au fait, quel est le lien entre URI et URL ?</h2>
<p>Le terme URI fait penser à un terme bien connu dans le Web que nous utilisons tous les jours : URL (Uniform Resource Locator).</p>
<p>Quelle est donc la différence entre ces deux termes très proches, souvent amalgamés ? La <a href="http://www.ietf.org/rfc/rfc2396.txt" target="_blank">RFC 2396</a>, qui définit la syntaxe des URI, nous donne une réponse explicite :</p>
<blockquote><p>&laquo;&nbsp;A URI can be further classified as a locator, a name, or both. The term &laquo;&nbsp;Uniform Resource Locator&raquo;&nbsp; (URL) refers to the subset of URI that identify resources via a representation of their primary access mechanism (e.g., their network &laquo;&nbsp;location&raquo;&nbsp;), rather than identifying the resource by name or by some other attribute(s) of that resource&raquo;&nbsp;</p></blockquote>
<p>Les puristes REST auront peut-être repéré que dans cet article, on a davantage évoqué &laquo;&nbsp;REST appliqué à HTTP&raquo;&nbsp; que &laquo;&nbsp;REST tout court&raquo;&nbsp;. Il s&#8217;agit d&#8217;un choix volontaire : d&#8217;une part, rappelons que le Web est une application des principes REST (et non l’inverse). HTTP 1.1 a été conçu afin de permettre cette application. D&#8217;autre part, cela permet de donner un aspect pragmatique à ces explications, dont le but est de clarifier les caractéristiques de REST.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeon-consulting.fr/fr/blog/2009/07/21/comprendre-rest-partie-2-uri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comprendre REST, partie 1 : Ressource</title>
		<link>http://www.aeon-consulting.fr/fr/blog/2009/07/08/comprendre-rest-partie-1-ressource/</link>
		<comments>http://www.aeon-consulting.fr/fr/blog/2009/07/08/comprendre-rest-partie-1-ressource/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 21:37:57 +0000</pubDate>
		<dc:creator>François Goldgewicht</dc:creator>
				<category><![CDATA[Carnets de Vol IT]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://www.aeon-consulting.fr/?p=126</guid>
		<description><![CDATA[Voici le premier article de nos Carnets de Vol ! Il s&#8217;agit du premier élément d&#8217;une série d&#8217;articles dont l&#8217;objectif est de présenter clairement REST, ou Representational State Transfer.
Depuis son apparition il y a 9 ans, et plus particulièrement ces toutes dernières années, REST en intéresse plus d&#8217;un : beaucoup de monde en parle et [...]]]></description>
			<content:encoded><![CDATA[<p>Voici le premier article de nos <strong>Carnets de Vol</strong> ! Il s&#8217;agit du premier élément d&#8217;une série d&#8217;articles dont l&#8217;objectif est de présenter clairement <strong>REST</strong>, ou <strong>Representational State Transfer</strong>.</p>
<p>Depuis son apparition il y a 9 ans, et plus particulièrement ces toutes dernières années, REST en intéresse plus d&#8217;un : beaucoup de monde en parle et déclare &laquo;&nbsp;en faire&raquo;&nbsp;.  Mais en pratique, beaucoup d&#8217;interrogations demeurent sur ce qu&#8217;est <em>réellement </em>REST et sur ce que ce n&#8217;est pas. Plutôt que de s&#8217;appuyer comme d&#8217;habitude sur un unique article qui deviendrait vite volumineux et difficile à appréhender, j&#8217;ai choisi de vous présenter REST en une dizaine de notions que nous allons aborder de manière incrémentale et pragmatique. Ces articles n&#8217;ont pas vocation à être exhaustifs mais simplement à mettre en lumière de manière structurée les caractéristiques essentielles de REST en essayant de faire disparaître la plupart des incompréhensions.</p>
<p>Ce premier article est consacré à la notion de &laquo;&nbsp;Ressource&raquo;&nbsp;.</p>
<p><span id="more-126"></span></p>
<h2>Notion de Ressource</h2>
<h3>Une Ressource ? Mais tout le monde sait ce que c&#8217;est !</h3>
<p>Peut-être serez-vous surpris de découvrir que le premier article de cette série concerne la notion de Ressource. Après tout, il s&#8217;agit d&#8217;un mot banal, bien ancré dans le jargon quotidien de l&#8217;informaticien. Et bien justement, ce mot est tellement employé qu&#8217;il est devenu difficile de savoir sa définition précise, dans le cadre de REST notamment. Lors de mes missions, on me demande parfois cette définition, ce qui m&#8217;amène à chaque fois à commencer ma réponse par le sondage suivant : &laquo;&nbsp;Comment définiriez-vous une Ressource ?&raquo;&nbsp;</p>
<p>Et cela ne rate jamais, les réponses sont divisées en deux groupes :</p>
<ul>
<li>certains pensent qu&#8217;une Ressource correspond à un objet métier manipulé par l&#8217;application : par exemple, des contrats, des clients, etc. Généralement, l&#8217;idée associée est qu&#8217;un service REST correspond à un simple service de type CRUD sur ces objets métier (je ne m&#8217;attarde pas sur ce point précis qui fera l&#8217;objet d&#8217;un prochain article)</li>
<li>d&#8217;autres pensent à une Ressource comme quelque chose de flou, tournant autour de tout et de rien : naturellement, cette définition peu précise contribue largement aux incompréhensions autour de REST. Cependant, nous allons le voir, elle n&#8217;est paradoxalement pas si loin de la vérité&#8230;</li>
</ul>
<p>Commençons donc par la base : qu&#8217;est-ce qu&#8217;une Ressource (dans le contexte REST) ?</p>
<h3>Définition d&#8217;une Ressource</h3>
<p>Dans sa <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" target="_blank">fameuse thèse</a>, Roy Fielding nous donne une définition large et ouverte :</p>
<blockquote><p><em>&laquo;&nbsp;Any information that can be named can be a resource: a document or image, a temporal service (e.g. &laquo;&nbsp;today&#8217;s weather in Los Angeles&raquo;&nbsp;), a collection of other resources, a non-virtual object (e.g. a person), and so on. In other words, any concept that might be the target of an author&#8217;s hypertext reference must fit within the definition of a resource</em>&laquo;&nbsp;</p></blockquote>
<p>Autrement dit : <strong>peut être une ressource</strong> <strong>tout objet assez important pour être référencé en tant que tel</strong>.</p>
<p>La recommandation <a id="rzy1" title="&quot;Architecture of the World Wide Web, Volume One&quot;" href="http://www.w3.org/TR/webarch/">&laquo;&nbsp;Architecture of the World Wide Web, Volume One&raquo;&nbsp;</a> du W3C, co-rédigée par Roy Fielding, est très explicite sur l&#8217;ouverture volontaire de cette définition :</p>
<blockquote><p><em>&laquo;&nbsp;We do not limit the scope of what might be a resource&raquo;&nbsp;</em></p></blockquote>
<p>Rappelons au passage que le Web est une application des principes REST (et non l&#8217;inverse). Il est donc essentiel de bien comprendre son architecture.</p>
<p>Et voilà, c&#8217;est aussi simple que cela. Vous l&#8217;aurez peut-être deviné, le prochain article de cette série sera consacré à la notion d&#8217;<strong>URI</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeon-consulting.fr/fr/blog/2009/07/08/comprendre-rest-partie-1-ressource/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
