Vous êtes sur la page 1sur 11

Matière : SOA et Services Web

----------------------------------------------
Auditoire : GLSI-3

TP1

Services Web REST simple avec JAX-RS

Objectif :

- Savoir créer et tester un service web de type REST en Java, en utilisant Jax-rs1
- Savoir manipuler les Réponses d’un service Rest avec les codes d’état.

Outils nécessaires :
 Eclipse IDE for Enterprise Java and Web Developers
Lien de téléchargement : Eclipse downloads - Select a mirror | The Eclipse Foundation
 WildFly (dans nos TP, nous utilisons la version widldfly 26.1.2Final)
Lien de téléchargement : WildFly Downloads
 Postman logiciel de test des web sevices
Lien de téléchargement : Download Postman | Get Started for Free

Configuration du serveur d’application Jakarta/JEE Wildfly avec Eclipse

1. Commencez par configurer l’environnement d’exécution Wildfly sous eclipse comme suit :
Window > Prefrences

1 Jax-rs : acronyme de Java API for Restful web Services. Depuis la version 1.1, JAX-RS fait partie intégrante de la
spécification Java EE 6 au niveau de la pile Service Web. Cette spécification décrit uniquement la mise en œuvre des services
web Rest côté serveur. Le développement des services web REST repose sur l’utilisation de classes Java et des annotations.

p. 1
tp1 – SOA et Services Web

2. Dans l’interface qui s’ouvre cliquez sur : Server > Runtime Environment > Add

3. Dans la liste qui s’affiche, sélectionnez JBoss AS, WildFly & EAP Server Tools sous la
catégorie Red Hat JBoss Middleware puis cliquez sur Next. Dans l’interface suivante acceptez
la licence et terminez l’assistant.

Remarquez l’installation des outils relatifs aux serveurs sélectionnés a démarré en arrière plan. N’arrêtez
pas Eclipse et attendez jusqu’à la fin de l’installation.

p. 2
tp1 – SOA et Services Web

4. A la fin de l’installation, une fenêtre s’affiche demandant votre autorisation pour accepter
l’origine des outils à installer. Cliquez sur Select All puis Trust Selected. Ensuite, cliquez sur
Restart Now.

5. Une fois redémarré, configurer le serveur Wildfly version 26 comme indiqué dans les interfaces
qui suivent :

p. 3
tp1 – SOA et Services Web

6. Dans l’interface qui s’ouvre, sélectionnez le dossier où vous avez décompressé wildfly. Cochez
l’option Alternate JRE et terminez l’assistant.

7. Dans l’interface qui s’affiche, cliquez sur Finish. Remarquez alors qu’une nouvelle configuration
du serveur Wildfly a été ajoutée à la liste des servers d’exécution configurés sous Eclipse comme
indiqué dans la figure suivante. Cliquez alors sur Apply and Close.

p. 4
tp1 – SOA et Services Web

Remarquez aussi qu’une nouvelle instance local du serveur Wildfly a été créée au niveau de l’anglet
Servers.

Exercice 1 : Savoir créer et tester un service REST

 Activité 1 : Créer un Service REST simple

1. Nous devons commencer par créer un nouveau projet Web dynamique « tp1_ex1 ». Vérifiez que
le serveur Wildfly est bien sélectionné.
2. Ajoutez à ce projet un package « com.istic.rest ». Y-ajoutee une classe nommée
PrintRessource. Cette classe représente notre classe d’implémentation des web services REST
et doit contenir des méthodes publiques.

3. Nous allons maintenant ajouter les annotations nécessaires.

Notez Que : Une ressource web dans le contexte des services REST est une simple classe Java (on parle
de POJO pour Plain Java Object ) comme Livre, Catégorie, Client …Cette classe doit être annotée par
p. 5
@Path, ou, à défaut, au moins une de ses méthodes doit l'être.
tp1 – SOA et Services Web

Pour exposer notre classe comme un service Rest, nous devons l’enrichir par des annotations de la
bibliothèque jax-rs. Par exemple :

- @Path("/print") : permet de définir un chemin pour associer la ressource PrintResource à un


URI
- @GET : lecture de la ressource via une requête HTTP de type GET
- @Produces : indique le type de représentation des données retournées par la requête GET.

Notre classe devient alors de la forme suivante :

Une application JAX-RS doit contenir au moins une classe ressource packagée dans une archive
WAR. Afin d’activer les ressources REST définies dans votre application, vous devez ajouter une
sous-classe javax.ws.rs.core.Application, puis ajouter les modèles d'URL requis à l'aide de
l'annotation @ApplicationPath. Le chemin défini dans l'annotation javax.ws.rs.ApplicationPath sera
ajouté à l'URL de base.

4. Créez alors une classe RestActivator sous le package « com.istic.rest » contenant le code suivant :

5. Votre service Rest est maintenant prêt, il suffit de le déployer sous Wildfly. Voici deux solutions
pour déployer le projet :

p. 6
tp1 – SOA et Services Web

Solution 1 : clic droit sur le projet tp1_ex1 > Run > Run on Server > Choisir Wildfy > Finish

Solution 2 : clic droit sur le serveur Wildfly > Add and Remove > Selectionner tp1_ex1 >Add > Finish.

Votre application doit être mise à jour constamment sur le serveur Wildfly afin d’être
synchronisée avec vos changements. Pour ce faire, sous le serveur Wildfly, cherchez votre projet
« tp1_ex1 » > Full Publish.

 Activité 2 : Tester le Service REST

» L’adresse du service créé est de la forme :

http://localhost:8080/tp1_ex1/RestApi/hello

Adresse du serveur nom du projet @ApplicationPath @Path


+ port (context) (Ressource)
» Vous pouvez maintenant tester votre service en utilisant le navigateur (seulement pour les web
services annotés par @GET) ou un logiciel de test des web services comme Postman

Solution 1 : Tester le service en utilisant le navigateur

1. Lancez le navigateur, puis insérer l’URL localhost:8080/tp1_ex1/RestApi/print et


validez.

URL pour accéder au service

Résultat de la requête

Solution 2 : Tester en utilisant Postman

1. Lancez Postman, puis créez une nouvelle collection « TP1SOA »


2. Y-ajoutez une nouvelle requête « request » à nommer « Test1 »

p. 7
tp1 – SOA et Services Web

1 3

2
4

3. Voici comment tester le service :

Méthode http
URL pour accéder au service

Exécution

Résultat de la requête

 Activité 3 : Paramétrer le Service REST

Maintenant on va changer le comportement de notre service web RESTful pour qu’il utilise des paramètres.

1. Ajoutez à la classe « PrintRessource» la fonction sayHelloYou. Les arguments de la fonction


sont fournis à partir des paramètres de la requête en utilisant l’annotation @QueryParam.

2. Vous pouvez tester cette ressource à partir de l’URL suivante toute en remplaçant la variable
name par une valeur de votre choix. Voici un exemple :

http://localhost:8080/tp1_ex1/RestApi/print/helloYou?name=Mouna

Test avec Posman :

p. 8
tp1 – SOA et Services Web

3. Ajoutez maintenant une autre fonction récupérant le name à partir des données d’un formulaire
en utilisant l’annotation @FormParam

4. Pour tester cette fonction, ajoutez dans Postman une nouvelle requête comme suit :

Exercice :

1. Ajoutez une fonction qui retourne la somme de deux entiers fournis comme
arguments de la requête et en utilisant @FormParam
2. Ajoutez une fonction getJson qui retourne le nom fournit comme argument en
json comme indiqué dans l’exemple suivant : {"nom " : "Mouna"}

p. 9
tp1 – SOA et Services Web

Exercice 2 : Manipuler les codes de status et Response

Quelle que soit l’opération demandée, les ressource indiquent toujours un statut de retour. Ce code est
renvoyé au client afin que celui-ci puisse connaître le problème réel et procéder en conséquence. 200,
500 et 404 sont les plus connus, ils indiquent, dans l’ordre, un succès, un échec et l’absence du document
recherché. Nous allons utiliser un générateur Response pour générer une réponse avec le code souhaité.

1. Créez un nouveau projet web Dynamique « tp1_ex2 ».


2. Y-ajoutez un package « com.isitic.rest » contenant 3 classes Etudiant, EtudiantRest et
RestActivator.
3. Créez la classe étudiant qui est identifiée par un id(int), un nom et une moyenne. Ajoutez un
constructeur sans paramètres, un constructeur avec 3 arguments qui initialise tous les attributs,
les getters et les setters.
4. Créez la classe EtudiantRest, y-ajoutez un attribut private static ArrayList<Etudiant>liste ,
et un constructeur initialisant cette liste par 3 étudiants.

5. Ajoutons maintenant à cette classe une fonction ayant les caractéristiques suivantes :

Fonction URL Méthode Suucès/Echec Code


http Statut
getAll() : retourne la liste de RestApi/etudiant/ GET Succès 200 ok
tous les étudiants en format No content (liste 204
json vide)

Voici le code de la fonction :

p. 10
tp1 – SOA et Services Web

Testez cette ressource.

6. Ajoutez maintenant les fonctions suivantes à la classe EtudiantRest:

Méthode URL Méthode Succes/Failure Code


Http Statut
getEtudiant(int id) : RestApi/etudiant/{id} GET succès 200 ok
Retourne un étudiant ayant inexistant 404
l’id correspondant Echec(id) 500
deleteEtudiant(int id) : RestApi/etudiant/{id} DELETE succès 200 ok
supprime un etudiant selon id inexistant 404
Echec(id) 500
updateEtudiant(Etudiant RestApi/etudiant/ PUT succès 200 ok
e) : mise à jour des données
echec 500
de l’étudiant
createEtudiant(Etudiant RestApi/etudiant/ POST succès 201 created
e) : ajouter l’étudiant à la
Echec 500
liste

Annexe

Les principales annotations de Jax-rs


Le tableau suivant résume quelques annotations utilisées pour développer des services Rest.

Annotation Rôle
@ApplicationPath C’est là où tu commences à définir l’URI de votre
application REST contenant plusieurs ressources
@Path - Sur une classe, définit des ressources racines
- Sur une méthode permet de spécifier le
traitement à réaliser (opération à appeler)
@GET, @POST, @DELETE, @PUT Définit l’action implémentée par le service
@Produces Est utilisée pour spécifier le / les types qu’une
méthode de ressource peut produire
@Consumes Spécifie le type accepté en entré du service

p. 11

Vous aimerez peut-être aussi