TP Web Service
S. Salva

Restful Web service, Jersey


1. Outils Nécessaires

IDE Netbeans (ou Eclipse)
La librairie Jersey 2 est incluse dans Netbeans

2. Création d'un SW REst simple

A

Dans Netbeans, créez un projet Java with Maven / Payara Micro Application (les dépendances Maven téléchargeront un serveur approprié).

Si vous avez des problèmes avec vos dépendances (suivant la version de Netbeans :-/) utilisez ce fichier pom.xml

Créez un Service Web Rest CRUD permettant de gérer des livres (fictifs ici) et retournant de simples chaines HTML suivant l'appel. Vous pouvez par exemple gérer une ArrayList de Livres pour simuler une base de données.

Rapppel:

Method Description
GET Demande d'une représentation d'une ressource
PUT Crée ou met à jour une ressource with une représentation fournie
DELETE Supprime la resource spécifiée
POST Envoie de données  à être traitées par la ressource donnée
OPTIONS Returns the methods supported by the identified resource

B

Créez le Client associé: créez un nouveau projet Java / Java Application

Vous pouvez tenter la génération d'un client : sous Netbeans, sur le projet en cours, faites click droit et New Restful Java Client. Cela génère une classe à instancier/appeler dans une méthode Main (à faire).


3. Services Web REST, HATEOAS

HATEOAS (Hypermedia as the Engine of Application State), est une contrainte faisant partie intégrante de REst initialement. Cette contrainte stipule qu'un client peut communiquer avec un service REst sans avoir de connaissances préalables sur le service. Le service doit donc fournir tous les détails pour être appelé dynamiquement.

A

Via un retour HTML composé de liens (exemple), modifiez la méthode précédente d'ajout de livres pour la rendre compatible HATEOAS. Par exemple, losrque vous avez ajouté un livre, le retour montre que vous pouvez mettre à jour la base de livres, les supprimer, etc.


4. Manipulation de ressources spécialisées

A

Créez un second projet Web Application.

Développez toujours un service Web REst pour manipulation de livres, mais cette fois en créant une ressource spécialisées appelée Book (classe métier). Il vous faut donc un nouveau POJO Book, oui.

Les appels doivent sérialiser les données avec le application/json

B

Créez un second Client pour ce deuxième service

Vous pouvez tenter une génération de code mais... ca ne marchera probablement pas, ou du moins ce sera incomplet

5. Composition de services

A

Modifiez le premier service en ajoutant une méthode pour que ce dernier appelle le deuxième service et retourne un chaine (@produces de type text/html). (Reprenez le code du client précédent !)

Testez via le navigateur ou en créant un client

6. Simulation d'un Service Web persistant en Rest (si temps disponible)

Reprenons la question 2.
On souhaite ajouter une méthode qui prend en paramàtre un Book. L'opération ajoute ce livre à une liste et retourne la liste.
font>

A

Quelles sont les solutions possibles ? (au moins 2)

B

Implantez la solution la plus rapide.