Demo de l'API REST v2 d'eZ Publish à la eZ Unconf #2

J'étais à la eZ Unconference 2013 à proximité de Montpellier. Pendant l'atelier API publique et API REST, j'ai présenté une utilisation concrète l'API REST v2 d'eZ Publish. J'ai choisi de construire une petite application en HTML5/JavaScript statique pour montrer qu'il est possible de faire une application assez amusante avec très peu de lignes de code.

L'application

Le code de cette application est disponible sur Github dans le dépôt eZunConf2013-REST-API-demo et elle est installable sur n'importe quel eZ Publish 5 suffisament récent. Avec un navigateur moderne supportant l'API getUserMedia/Stream, elle permet de prendre une photo avec la webcam de votre ordinateur et de créer un objet Image à partir de celle-ci dans eZ Publish ! Voici un rapide screencast de l'application en action:

Ce genre de fonctionnalité aurait typiquement sa place sur n'importe quel site où les utilisateurs devraient avoir une vraie photo sur leur profil comme un réseau social, un intranet d'entreprise, un site communitaire, …

Quelques détails techniques

  • Dans le screencast, le navigateur demande à l'utilisateur de s'identifier car l'application utilise l'authentification Basic (la méthode d'authenfication par défault de l'API REST). Avec quelques modifications mineures, l'authenfication par session est aussi utilisable.
  • 6 requêtes HTTP sont nécessaires à la création du contenu et à la récupération de son URI. Ce chiffre relativement important est dû à la division fine des ressources (il s'agit d'une bonne pratique dans le design d'une API REST). Autre point sur les ressources, les URIs ne devraient jamais être construites par le client REST, mais toujours récupérées depuis une réponse précédente. Des API clientes (en PHP et en JavaScript) sont en cours d'écriture et elles devraient permettre de largement simplifier le code en évitant d'avoir à travailler au niveau requêtes HTTP.
  • L'application doit être sur le même domaine qu'eZ Publish. Il s'agit d'une limitation imposée par les navigateurs. Il est possible de contourner ce problème mais je n'ai juste pas eu le temps de me pencher en détail là dessus.

Pour de plus amples détails, je vous laisse examiner le code JavaScript. Merci d'être indulgent sur la qualité du code, cet exemple a vraiment été écrit rapidement et dans le but d'être très simple à comprendre. J'espère avoir le temps d'écrire une version plus propre et plus avancée prochainement.

Ressources au sujet de l'API REST v2 d'eZ Publish