TP Web Service
S. Salva

Restful Web service, Jersey


1. Outils nécessaires

Maven, serveur d'applications (Payara, TomEE+)

Pour faire le TP, vous avez plusieurs solutions:

  1. Artefact Maven en lcmd, puis import du projet dans un IDE (ou pas).  
  2. Netbeans avec New Java with Ant / Java Web / Web Application. Il faut télécharger un serveur (TomEE+ 8).
  3. Netbeans avec projet Payara Micro application ?

    netbeans

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

2. Création d'un SW REst simple

A

Créez un Service Web Rest  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 Livres pour simuler une base de données. Pour l'instant, je ne vous demande pas de gérer une Entité (voir dessous)

N'oubliez pas de gérer les erreurs (codes retours HTTP ou Exceptions type WebApplicationException)

Faites une méthode avec le verbe @GET puis une autre avec le verbe @POST

Rapppel:

Method Description
GET Demande d'une représentation d'une ressource
PUT Créez ou mettez à jour une ressource avec 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

Pour tester le fonctionnement de votre service, vous pouvez utiliser un navigateur (pour @GET) ou un utilitaire comme Postman.
 

3. Création d'un Client

Créez le Client associé avec Jersey.
Faites un nouveau projet Maven avec votre IDE

Ajoutez la dépendance Jersey.client
<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>XXXX</version>
</dependency>

Puis faites un client à la main

ou bien ?

Sous Netbeans, avec les solutions 2  et 3 uniquement, vous pouvez tenter la génération automatique d'un client : 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). Généralement, il y a des modifications à apporter (changer les URLs, etc.).

3. Manipulation de ressources spécialisées (Entités)

A

Créez un second service Web Rest pour manipulation de livres, mais cette fois en créant une entité appelée Book. Il vous faut donc une nouvelle classe Book.

La sérialisation sera de type application/json. Faites au moins une méthode de type GET et POST

B

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

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

On souhaite créer une méthode qui prend en paramàtre une instance Book. L'opération ajoute ce livre à une liste et retourne la liste.

A

Quelles sont les solutions possibles ? (au moins 2)

B

Implémantez la solution la plus rapide.