Université de Monastir A.
U : 2022 - 2023
Institut supérieur d'informatique de Mahdia Enseignants : Hamdi ALOULOU
Département Informatique Raouia Fredj
Les services web RESTFul
1. Créez un nouveau projet web dynamique nommé helloRESTEasy sans oublier de
générerle fichier « [Link] ». Choisissez WildFly comme Target Runtime.
2. Ouvrez le « Build Path » du projet et changez le « JRE System Library » à JavaSE–1.8
3. Créez une nouvelle classe Java nommée HelloWorldResource qui représente notre
ressource REST.
4. Ajoutez les annotations JAX-RS suivantes :
▪ @Path("/MyRESTApplication") permet de définir un chemin pour associer la
ressource HelloWorldResource à un URI
▪ @GET lecture de la ressource HelloWorldResource via une requête HTTP de type GET
▪ @Produces("text/plain") indique le type de représentation retournée par la requête
GET.
@Path("/MyRESTApplication")
public class HelloWorldResource {
@GET
@Produces("text/plain")
public String SayHello()
{
return "Hello World!";
}
5. RESTeasy est une implémentation de JBoss Open source de la spécification JAX-RS. Elle
fournit une Servlet qui prendra en charge le traitement des requêtes vers les services web
REST. Ainsi, il faut apporter les modifications suivantes au fichier « [Link] » de
l’application.
1
Université de Monastir A.U : 2022 - 2023
Institut supérieur d'informatique de Mahdia Enseignants : Hamdi ALOULOU
Département Informatique Raouia Fredj
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="[Link]
xmlns="[Link] xsi:schemaLocation="[Link]
[Link] id="WebApp_ID" version="4.0">
<display-name>MyRESTApplication</display-name>
<servlet>
<servlet-name>Jersey Web app</servlet-name>
<servlet-class>[Link]</servlet-class>
<init-param>
<param-name>[Link]</param-name>
<param-value>helloREST</param-value>
</init-param>
<init-param>
<param-name>[Link]</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web app</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
▪ <servlet>: c’est la servlet RESTEasy
▪ <servlet-mapping>: les URIs débutants par nom_application/ * seront traités par la
servlet RESTEasy
▪ <listener>: permet l’initialisation de la servlet RESTEasy
▪ <context-param> [Link]: les classes du projet seront scannées à la recherche
des annotations JAX-RS
6. Déployez le projet web dans le serveur WildFly.
7. Test du service RESTfull :
En tapant l’url [Link] on envoie une
requête HTTP de type GET demandant la lecture de la ressource HelloWorldResource.
[Link] MyRESTApplication
context root chemin ressource
2
Université de Monastir A.U : 2022 - 2023
Institut supérieur d'informatique de Mahdia Enseignants : Hamdi ALOULOU
Département Informatique Raouia Fredj
8. Création d’un service web RESTful paramétré
Maintenant on va changer le comportement de notre service web RESTful pour qu’il utilise des
Paramètres
@PathParam
L’annotation @PathParam récupère des arguments passés dans le chemin de l’URI.
Ajoutez la méthode suivante à la classe HelloWorldRessource :
@GET
@Path("/hello/{name}")
@Produces("text/plain")
public String SayHello(@PathParam("name") String name)
{
return "Hello " + name + " !";
}
Testez l’url suivante :
[Link]
@QueryParam
L’annotation @QueryParam récupère les valeurs des paramètres de la requête.
@GET
@Path("/hello2")
@Produces("text/plain")
public String SayHello2(@QueryParam("name") String name)
{
return "Hello " + name + " !";
}
Testez l’url suivante :
[Link]
3
Université de Monastir A.U : 2022 - 2023
Institut supérieur d'informatique de Mahdia Enseignants : Hamdi ALOULOU
Département Informatique Raouia Fredj
9. Création d’un client du service RESTful
Rappelons que JAX-RS est une spécification décrivant le développement des services
web REST côté serveur. Le framework RESTEasy fournit une implémentation de JAX-
RS mais aussi une autre implémentation côté client afin de consommer un service web
REST.
- Créez un nouveau projet java
- Créez une classe java et ajoutez le code suivant. Lancez l’application pour tester.
public class ClientHello {
public static void main(String[] args)
{
ClientRequest request1 = new
ClientRequest("[Link]
ClientRequest request2 = new ClientRequest("[Link]
helloRESTEasy/MyRESTApplication/hello/{n}");
[Link]("n", "foulen");
ClientRequest request3 = new ClientRequest("[Link]
helloRESTEasy/MyRESTApplication/hello2");
[Link]("name", "foulen");
ClientResponse<String> res1, res2, res3;
try {
res1 = [Link]([Link]);
[Link]([Link]());
res2 = [Link]([Link]);
[Link]([Link]());
res3 = [Link]([Link]);
[Link]([Link]());
} catch (Exception e) {
// TODO Auto-generated catch block
[Link]();
}
}