Dans la première partie de ce billet, j’ai rapidement présenté le protocole OData ainsi que quelques interfaces “clientes” permettant de consommer des services.
Voyons maintenant s’il est également facile de consommer ces données à l’aide d’une API programmatique! Je ne vais pas vous montrer comment consommer ces flux en .NET, car la méthode est somme toute bien connue et bien documentée (“Using a Data Service” sur MSDN par exemple). Par contre, vous allez voir que l’API Java est toute aussi simple d’utilisation.
Tout d’abord, vous devez télécharger la version 2.0 RC1 du Restlet Framework, annoncée par Jérôme Nouvel de Noelios sur son blog. Restlet est un framework Java très populaire, permettant aux développeurs de développer leurs applications en respectant les principes d’une architecture REST.
Cette nouvelle version inclut un support amélioré du protocole OData, qui s’inscrit complètement dans le mouvement REST, comme détaillé par Noelios dans ce billet: Restlet supports OData, the Open Data Protocol.
Je vous conseille de télécharger la version 2.0 RC via la page de téléchargement des derniers snapshots:
Une fois l’archive dézippée, créons un projet Java classique dans Eclipse et référençons les librairies nécessaires:
Voici les librairies dont vous avez besoin:
Tout comme dans le monde .NET, l’accès à un service OData se fait en deux temps: l’on utilise tout d’abord un outil pour générer automatiquement les classes encapsulant les entités exposées. L’on peut lancer cet outil en ligne de commande ou via du code, et j’ai choisi cette deuxième option:
L’on voit ici que l’on appelle le générateur en lui passant en argument l’URL du service OData (dans mon exemple, le service exposant le programme des sessions du MIX10), ainsi que le répertoire dans lequel il ira générer le code.
Le générateur va alors créer un certain nombre de classes:
La première série, dans le package “eventmodel”, correspond au différentes entités exposées par le service OData; si l’on ouvre la classe Session.java par exemple, l’on voit que le générateur a automatiquement récupéré l’ensemble des propriétés exposées par les entités et créé les classes avec les membres typés correctement:
La deuxième classe créée, ApiVisitmixComService.java (que j’ai déplacé dans le package org.dotpunk.restlet pour mon test), est un objet Service qui va nous permettre de communiquer avec le service OData.
Voyons donc comment envoyer une requête simple à notre service MIX10:
Ici, l’on récupère simplement les cinq premières entités de type Session, et l’on affiche le code session et son titre.
L’on peut bien entendu aller beaucoup plus loin avec l’API OData de Restlet, qui autorise notamment les ajouts/modifications/destructions d’entités, les System Query Options de OData comme $top, $filter ou $orderby, etc.
Pour aller plus loin, je vous encourage à suivre le tutoriel complet mis à disposition sur le site du Framework Restlet.