Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

article.md 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. title: ★ Django-ROA, pour une architecture orientée ressources
  2. slug: django-roa-pour-une-architecture-orientee-ressources
  3. date: 2009-05-26 00:00:58
  4. type: post
  5. vignette: images/logos/django_pony.png
  6. contextual_title1: Rencontres Django à Marseille le WE du 24/25 avril
  7. contextual_url1: 20100121-rencontres-django-marseille-le-we-du-2425-avril
  8. contextual_title2: ★ Pourquoi Python et Django
  9. contextual_url2: 20091211-pourquoi-python-et-django
  10. contextual_title3: ★ Astuces et bonnes pratiques Django
  11. contextual_url3: 20080211-astuces-et-bonnes-pratiques-django
  12. Il y a un projet sur lequel je travaille depuis un moment maintenant dans le cadre de mes prestations et que j'ai décidé de libérer (sous licence BSD) car je pense qu'il peut être utile à pas mal de monde : [Django-ROA](http://code.welldev.org/django-roa/).
  13. ## Qu'est-ce que ça fait ?
  14. **Il s'agit de pouvoir gérer ses ressources distantes normalement accessibles en REST directement via l'ORM et les modèles de Django**. Le module va s'occuper (comme le montre le merveilleux schéma ci-dessous) de convertir la requête Django initiale en une requête HTTP et de convertir/déserializer la réponse en un objet Django :
  15. <p>
  16. <img
  17. src="/static/david/biologeek/images/django-roa-diagram-petit.png"
  18. alt="Django-ROA diagram"
  19. style="margin: 0pt auto; display: block;"/>
  20. </p>
  21. Ok pour le fonctionnement mais qu'en est-il des applications ?
  22. Le module a originellement été développé pour s'intégrer dans les architectures orientées services (SOA) ayant une contrainte REST (d'où le [ROA](https://larlet.fr/david/biologeek/archives/20070629-architecture-orientee-ressource-pour-faire-des-services-web-restful/)). Cela signifie que vous pouvez brancher votre application sur une base de données métier sous réserve qu'elle ait une interface HTTP. **Ce qui ouvre la porte aux bases non supportées par Django nativement, aux entrepôts de données et aux multi-databases** puisque vous pouvez spécifier une URI par modèle... Soyons encore plus fous, CouchDB parle le HTTP, et bien il suffirait d'un connecteur approprié pour pouvoir accéder aux documents via des modèles Django !
  23. Lors d'[EuroDjangoCon](http://euro.djangocon.org/), [Jesper](http://noehr.org/) venait de sortir [django-piston](http://bitbucket.org/jespern/django-piston/) (qui est utilisé pour les tests de [django-roa](http://code.welldev.org/django-roa/)) et faisait des tests d'application sur [Pinax](http://pinaxproject.com/). J'ai pu vérifier en communiquant avec l'API mise en place sur sa machine que je pouvais éditer des objets Pinax via une interface d'administration de Django qui était lancée sur ma machine. Ce qui signifie que l'**on pourrait imaginer une interface d'administration commune à plusieurs projets** (pas forcément Django) présentant des API.
  24. Si vous avez d'autres idées d'applications, n'hésitez pas à laisser libre cours à votre imagination. Je n'ai pas parlé de RDF mais vous pensez bien que ce module est une partie intégrante de ce que j'ai appelé [architecture moderne et agile](https://larlet.fr/david/biologeek/archives/20080604-architecture-web-moderne-et-agile/) ;-).
  25. ## Comment l'utiliser ?
  26. Je ne vais pas reproduire la doc ici mais c'est relativement simple, il suffit d'hériter du **Model** de django-roa et de définir l'URL de la ressource avec la méthode **get\_resource\_url\_list**.
  27. Après, il y a beaucoup de **settings** et méthodes pour configurer tout ça, le plus intéressant pour découvrir le module est probablement **ROA_MODELS** qui permet de passer facilement d'une architecture locale (pour développer) à une architecture orientée ressources (pour tester grandeur nature). Sinon la lecture des tests peut être d'une grande aide.
  28. Notez qu'il est nécessaire de patcher Django (du moins pour l'instant) avec [le patch lié au ticket #10109](http://code.djangoproject.com/ticket/10109) pour pouvoir utiliser le module avec les relations ManyToMany.
  29. ## Comment participer ?
  30. En testant le module dans un premier temps, en enrichissant [la documentation](http://code.welldev.org/django-roa/wiki/Home) au besoin (je peux facilement vous laisser des droits si vous avez un compte BitBucket), en proposant des patchs ou tout simplement en discutant des concepts.
  31. J'aurais le plaisir d'en présenter brièvement les détails [lors de Pycon-fr](http://pycon.fr/) (dimanche après-midi) où j'espère vous retrouver nombreux. Il y aura aussi un atelier Django le samedi après-midi pour ceux et celles qui voudraient s'y mettre !