<?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>Le Mad Blog &#187; rest</title>
	<atom:link href="http://j-mad.com/blog/tag/rest/feed/" rel="self" type="application/rss+xml" />
	<link>http://j-mad.com/blog</link>
	<description>juste un blog</description>
	<lastBuildDate>Sun, 11 Jul 2010 20:34:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Django-ROA ou&#8230; Mince je trouve pas de jeux de mots là</title>
		<link>http://j-mad.com/blog/2009/11/29/django-roa-ou-mince-je-trouve-pas-de-jeux-de-mots-la/</link>
		<comments>http://j-mad.com/blog/2009/11/29/django-roa-ou-mince-je-trouve-pas-de-jeux-de-mots-la/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 20:09:38 +0000</pubDate>
		<dc:creator>J-Mad</dc:creator>
				<category><![CDATA[La Django-app du mois]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://j-mad.com/blog/?p=242</guid>
		<description><![CDATA[
			
				
			
		
Ça sera bien la première fois que je ne fais pas de jeux de mots dans le titre d&#8217;un billet la Django-app du mois. Mais là, je n&#8217;ai vraiment pas d&#8217;inspiration et comme je suis sur un timing plutôt serré (le billet devant être publié d&#8217;ici au plus tard 4h20 pour pouvoir prétendre à être [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fj-mad.com%2Fblog%2F2009%2F11%2F29%2Fdjango-roa-ou-mince-je-trouve-pas-de-jeux-de-mots-la%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fj-mad.com%2Fblog%2F2009%2F11%2F29%2Fdjango-roa-ou-mince-je-trouve-pas-de-jeux-de-mots-la%2F&amp;source=mrjmad&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Ça sera bien la première fois que je ne fais pas de jeux de mots dans le titre d&#8217;un billet la Django-app du mois. Mais là, je n&#8217;ai vraiment pas d&#8217;inspiration et comme je suis sur un timing plutôt serré (le billet devant être publié d&#8217;ici au plus tard 4h20 pour pouvoir prétendre à être un billet de novembre), je ne vais pas trop attendre qu&#8217;elle n&#8217;arrive. Je me rattraperai le mois prochain (je pense parler de piston le mois prochain, tout un poème&#8230;).</p>
<p><a href="http://code.welldev.org/django-roa/">Django-ROA</a> donc, cette jolie app est développée par <a href="http://www.biologeek.com/">David Larlet</a> que j&#8217;ai déjà cité dans mes précédents billets. Il permet de gérer des ressources distantes normalement accessibles en REST, en passant à travers l&#8217;ORM de django (et donc les modèles Django).</p>
<p>Et oui, ça permet, d&#8217;une façon plus que facile de faire comme si des modèles distants étaient des modèles locaux.</p>
<p>Le petit schéma suivant (que j&#8217;ai très vilainement récupéré du site de David, sur le <a href="http://www.biologeek.com/django,python,web-semantique/django-roa-pour-une-architecture-orientee-ressources/">billet parlant de Django-ROA</a>) explique tout, bien mieux que ne le ferraient mille de mes mots.</p>
<p><img class="alignnone size-full wp-image-243" title="django-roa-diagram-petit" src="http://j-mad.com/blog/wp-content/uploads/2009/11/django-roa-diagram-petit.png" alt="django-roa-diagram-petit" width="596" height="328" /></p>
<p>Bien entendu, on est pas obligé de se limiter à faire communiquer notre Django à un autre Django distant. On peut se connecter à tout ce qui a une interface HTTP. Op timeline de Twitter, Op n&#8217;importe quelle BD discutant le HTTP…</p>
<p>Je vois à vos sourires béats que vous êtes en train de comprendre combien Django-ROA peut être utile. Et vous avez raison.</p>
<h1>1- Où on le trouve, comment on l’installe, tout ça quoi ?</h1>
<p>Alors on le trouve sur la page bitbucket qui lui est consacré. Pour l&#8217;installation, il y a deux possibilités :</p>
<ul>
<li>soit avec hg et op on récupère la dernière version des sources</li>
<li>soit avec easy_install</li>
</ul>
<p>Attention toutefois, le package easy_install contient une version du trunk Django 1.2. Si vous ne voulez pas l&#8217;utiliser, il faudra penser à supprimer le répertoire en question.</p>
<p>Dans les deux cas Django-roa vient avec une version de restkit et une version de Django-piston. Si vous avez déjà ces deux librairies là, là aussi il faudra penser à faire le nettoyage.</p>
<p>Enfin, c&#8217;est important, si vous êtes en Django &lt; trunk, il vous faudra patcher votre Django pour pouvoir utiliser les many to many en distant. Si vous êtes en Django SVN, il vous faudra attendre que David ait rendu Django-ROA compatible Django 1.2 (c&#8217;est peut-être déjà le cas d&#8217;ailleurs).</p>
<h1>2- Niveau documentation</h1>
<p>Il y a le <a href="http://code.welldev.org/django-roa/wiki/Home">wiki</a> du bitbucket ainsi que l&#8217;article du blog de David dont j&#8217;ai déjà donné le lien (mais je le <a href="http://www.biologeek.com/django,python,web-semantique/django-roa-pour-une-architecture-orientee-ressources/">redonne</a> pour les étourdis). Il y a également le code source des tests, qui permet de bien comprendre comment tout fonctionne. Et je vous recommande vraiment de lire le code des tests si vous voulez comprendre.</p>
<h1>3- Qu&#8217;est-ce qu&#8217;on fait et comment on le fait ?</h1>
<p>Qu&#8217;est-ce qu&#8217;on fait, je vous l&#8217;ai déjà dit. Faut suivre un peu. On connecte notre Django à notre Django (ou d&#8217;autre base distante, voir l&#8217;exemple avec Twitter). Mais ce qu&#8217;il faut savoir c&#8217;est que Django-ROA permet de gérer la partie serveur et la partie client, dans le cas où vous développez vous même la partie &#8216;Django distante&#8217;.</p>
<p>Maintenant Django-ROA est encore en dev, et il peut être utile de connaître quelques petits tuyaux, que bien entendu, je vais vous donner.</p>
<h1>4- Les tuyaux de Jmad&#8230;</h1>
<h2>4.1- Erreur 500 côté serveur</h2>
<p>Sur la partie serveur, il se peut que vous vous trouviez avec des erreurs 500 assez silencieuses. C&#8217;est moi ce que j&#8217;ai eu. Il se trouve que c&#8217;est dû au logging.debug et à un problème (allez savoir pourquoi) d&#8217;encodage UTF-8. Enlevez les logging et tout roule. Je n&#8217;ai pas eu le temps de chercher et faire remonter à David le pourquoi du comment de ce problème, mais comme je me suis creusé la tête quelques temps avant de trouver le problème, je préfère vous informer.</p>
<h2>4.2- Sérialisation&#8230;</h2>
<p>Par défaut, on peut sérialiser les objets de trois façons :</p>
<ul>
<li>en JSON,</li>
<li>en XML,</li>
<li>en utilisant le sérialiseur fait par David pour les tests qui est un sérialiseur XML un peu modifié.</li>
</ul>
<p>Allez savoir pourquoi, mais pour moi, seul le troisième daignait fonctionner.</p>
<h2>4.3- Authentification</h2>
<p>Pour l&#8217;instant l&#8217;authentification sur les services distants n&#8217;est pas gérée. Si vous en avez absolument besoin, n&#8217;hésitez pas à envoyer un mail à David.</p>
<h1>5- Conclusion</h1>
<p>Django-ROA est encore un module en dev, il manque quelques fonctionnalités qui pourraient le faire passer du statut d&#8217;app intéressante et utile à celui d&#8217;app complétement indispensable. Mais il est d&#8217;ors est déjà bien utile, quand des problématiques de communication entre bases distantes se mettent à apparaître.</p>
<p>Il me semble juste que l&#8217;on devrait changer son nom, pour par exemple Django-CROA. Ça m&#8217;aurait permis d&#8217;avoir un bien meilleur titre du genre Django-CROA et le crapaud est en toi, ou alors Django-CROA , l&#8217;app qui voulait devenir aussi grosse qu&#8217;un bœuf&#8230;) enfin, tant pis.</p>
]]></content:encoded>
			<wfw:commentRss>http://j-mad.com/blog/2009/11/29/django-roa-ou-mince-je-trouve-pas-de-jeux-de-mots-la/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
