REST JEE

Objectif

Réaliser à l’aide l’architecture JEE, une application web avec des services web Rest

Les prérequis…

 

Un service web REST avec JERSEY…

Un service web Rest est un service accessible via http. Il utilise à la fois

  • l’URI (chemin vers la ressource demandée) et
  • une méthode http aux choix (GET, POST, PUT, DELETE).

Chaque service doit être conçu via les différentes URIs et méthodes.

Le framework JERSEY est une implémentation candidate pour la gestion des services rest via JAX-RS (API JAVA). Plusieurs autres existent sur le marché : CXF (Apache), RestEasy (JBoss), RESTlet, etc. Il faut donc l’ajouter à la liste de vos bibliothèques utilisées via MAVEN.

On ajoute dans le pom.xml du projet :

JERSEY permet d’appeler le bon service lors de chaque requête http et ce via une servlet référencée dans le web.xml. En effet cette servlet utilise les différents paramètres (init-param) pour repérer la classe du contexte applicatif (Application) ou les packages encapsulant des services.

On complète le web.xml de l’application web comme suit :

De plus, chaque projet Rest prévoit une classe Application pour rappeler le context et y ajouter le cas échéant des informations importantes relatives aux différents services.   Cette classe, même vide, permet d’initialiser l’application et d’éviter des problèmes de redirection vers les différents services surtout quand il y a transfert de données (JSON ou XML).

Voici un exemple de la classe application

L’application HelloWorld

On initialisera notre premier projet Rest avec les indications précisées ci-dessus.  On ajoutera notre première classe HelloService qui encapsulera deux services différents :

  • une URI (/hello) avec la méthode GET et
  • une URI (/hello/{name}) avec la méthode GET

Voici la Classe HelloService :

Un client pour tester (SoapUI)…

Pour tester les requêtes GET, il suffit de saisir l’URL sur un navigateur.  En effet, pour tester chacun de nos nouveaux services, on saisira les URLs suivantes :

  • http://<serveur>:<port>/<nomApp>/rest/hello  pour le premier service
  • http://<serveur>:<port>/<nomApp>/rest/hello/<nom> pour le deuxième service

Ceci étant dit, pour tester les différents nouveaux services Rest, on peut installer l’utilitaire SoapUI (version 5.3.0) et ainsi simuler plus facilement les autres méthodes HTTP.

 

Un service web REST qui produit du JSON avec JACKSON…

Dans le cadre de cette partie, nous allons créer une autre classe de services.  Elle pourra à terme envoyer et recevoir des données JSON.

En effet, pour le transport de données, plusieurs formats existent : XML, HTML, JSON, PLAIN TEXT, etc. Dans le cadre de ce tutoriel, on utilisera JSON (structuré et léger). Le framework Jackson est utilisé pour transformer des objets en JSON et inversement. On demandera à MAVEN de nous l’importer dans le projet :

Voici maintenant une nouvelle classe UserService qui contiendra les différents nouveaux services. Elle utilise un tableau de users pour simuler une source de données (cette classe n’est pas encore fonctionnelle !!!) :

Voici la classe User utilisée:

Dans la classe UserService, nous pourrons ajouter plusieurs types de services.  Ce tutoriel en proposera plusieurs qui peuvent ne pas cohabiter entre elles. Quelques requêtes étant similaires, elle peuvent provoquer des ambiguïtés pour JERSEY.

Voici, donc, quelques exemples de services :

1- URI : /users et la méthode : GET (cette ressource produit une liste de users avec JSON)

2- URI : /users/{nom} et la méthode : GET (cette ressource produit un objet user selon le nom avec JSON)

 

Attention la requête suivante ne peut cohabiter avec la première requête décrite (elles se ressemblent trop entre elles !!!)

3- URI : /users ?nom=xxx avec un paramètre de requête (nom) et la méthode : GET (cette ressource produit un objet user selon le nom avec JSON)

 

4- URI : /users via un formulaire à deux entrées (nom et age) et la méthode : POST (cette ressource ajoute un user à la liste et renvoie le tout avec JSON)

 

5- URI : /users/{nom} et la méthode : DELETE (cette ressource supprime un user de la liste et renvoie la nouvelle liste avec JSON)

Un service web REST qui consomme du JSON avec JACKSON et JERSEY…

Pour consommer du JSON, il faut ajouter quelques dépendances supplémentaires pour permettre au framework JERSEY et JACKSON de transformer le texte JSON en Objet Java.

Voici un dernier exemple de service qui utilise du JSON en entrée :

URI : /users avec un objet user en JSON et la méthode : PUT (cette ressource ajoute un user à la liste et renvoie la nouvelle liste avec JSON)

Vous pouvez maintenant tester tous vos services ou presque et compléter cet exemple en intégrant une connexion à la base de données pour plus d’interactivité !!

2018-07-04T19:40:11+00:00By |Tags: |

Leave A Comment