0% ont trouvé ce document utile (0 vote)
48 vues7 pages

TP7 Rest 2

Ce document présente un TP sur la création d'un service web RESTFul pour gérer des opérations CRUD sur des ressources de bibliothèque et de livre. Les étudiants doivent créer un projet Java, définir des entités, et implémenter des méthodes pour ajouter, lister, rechercher, mettre à jour et supprimer des livres via des requêtes HTTP. Les opérations sont testées à l'aide de l'outil POSTMAN.

Transféré par

montaest100
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
48 vues7 pages

TP7 Rest 2

Ce document présente un TP sur la création d'un service web RESTFul pour gérer des opérations CRUD sur des ressources de bibliothèque et de livre. Les étudiants doivent créer un projet Java, définir des entités, et implémenter des méthodes pour ajouter, lister, rechercher, mettre à jour et supprimer des livres via des requêtes HTTP. Les opérations sont testées à l'aide de l'outil POSTMAN.

Transféré par

montaest100
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université de Monastir A.

U : 2022 - 2023
Institut supérieur d'informatique de Mahdia Enseignants : Hamdi ALOULOU
Département Informatique Raouia Fredj
Module : SOA – TP

Service web RESTFul pour les opérations CRUD

Objectifs :
L’objectif de ce TP est de mettre en place un service web RESTFul permettant d’effectuer des
opérations CRUD sur une ressource. Les ressources manipulées sont bibliothèque et livre.
Une bibliothèque dispose de plusieurs livres. Les opérations qu’on peut effectuer sont :
- Ajout d’un livre
- Mise à jour d’un livre
- Suppression d’un livre
- Recherche d’un livre en fonction de son ISBN
- Récupération de la liste des livres
Pour pouvoir tester ces opérations, vous devez installer POSTMAN sur vos machines.

Création du projet Service Web REST :


1- Créez un projet Web dynamique « BibliothequeRESTEasy ».
2- Faites le nécessaire pour pouvoir utiliser ce projet en tant que service web REST EASY.

Création de l’entité Livre :


Dans ce TP, on va tester le passage et la récupération de données structurées. Le format de données
qu’on va utiliser sera XML.
On va donc annoter la classe « Livre » par @XmlRootElement pour faire le mapping entre XML
et les instances.

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Livre {
private String isbn;
private String titre;

public Livre() {
}

public Livre(String isbn, String titre) {


super();
this.isbn = isbn;
this.titre = titre;
}
Page 1 sur 7
Université de Monastir A.U : 2022 - 2023
Institut supérieur d'informatique de Mahdia Enseignants : Hamdi ALOULOU
Département Informatique Raouia Fredj
Module : SOA – TP

public String getIsbn() {


return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public String getTitre() {
return titre;
}
public void setTitre(String titre) {
this.titre = titre;
}
}

Création de l’entité Livre :


Créez une classe Java nommée « Bibliotheque ».
import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.*;

@Path("/bibliotheque")
public class Bibliotheque {

static List<Livre> livres = new ArrayList<Livre>();

Ajout d’un Livre :


Pour ajouter un livre, l’utilisateur doit utiliser une requête d’écriture (PUT) qui va créer une
ressource livre. La corps (Body) de requête HTTP doit contenir une représentation XML de la
ressource à ajouter. Le service renvoie une chaine de caractère contenant un message de succès
une fois la création effectuée.
Ainsi le code pour effectuer cette opération doit être
@PUT
@Consumes("application/xml")
@Path("/livre")
public String ajouterLivre(Livre livre)
{
if(livres.add(livre))
return "Livre ajouté.";
else
return "Impossible d'ajouter le livre.";
}

Page 2 sur 7
Université de Monastir A.U : 2022 - 2023
Institut supérieur d'informatique de Mahdia Enseignants : Hamdi ALOULOU
Département Informatique Raouia Fredj
Module : SOA – TP

L’annotation @Consumes spécifie le type de données en entrée accepté par le service.


Testez la requête HTTP PUT sur POSTMAN avec l’url :
http://localhost:8080/BibliothequeRESTEasy/bibliotheque/livre

Lister les Livres :


Pour demande la liste des livres, Nous effectuons une requête de lecture (GET), demandant une
représentation XML de la ressource.
@GET
@Produces("application/xml")
@Path("/livre")
public List<Livre> listerLivres()
{
return livres;
}
@Produces indique les types de représentation que peut retourner la méthode du service.

Page 3 sur 7
Université de Monastir A.U : 2022 - 2023
Institut supérieur d'informatique de Mahdia Enseignants : Hamdi ALOULOU
Département Informatique Raouia Fredj
Module : SOA – TP

Testez la requête HTTP GET sur POSTMAN avec l’url :


http://localhost:8080/BibliothequeRESTEasy/bibliotheque/livre

Rechercher un Livre :
@GET
@Produces("application/xml")
@Path("/livre/{isbn}")
public Livre chercherLivre(@PathParam("isbn") String isbn)
{
Livre livre = null;
for(Livre l:livres)
{
if(l.getIsbn().equals(isbn))
livre =l;
}
return livre;
}
On ajouter {isbn} au path pour indiquer que c’est une valeur variable qui change selon le livre
recherché par l’utilisateur. L’annotation @PathParam permet de récupérer la valeur de isbn
envoyée dans l’url et l’affecter au parametre isbn de la méthode chercherLivre.

Page 4 sur 7
Université de Monastir A.U : 2022 - 2023
Institut supérieur d'informatique de Mahdia Enseignants : Hamdi ALOULOU
Département Informatique Raouia Fredj
Module : SOA – TP

Testez la requête HTTP GET sur POSTMAN avec l’url :


http://localhost:8080/BibliothequeRESTEasy/bibliotheque/livre/1234-45

Mettre à jour un Livre :


Nous effectuons une demande de mise à jour pour la ressource présentée au format XML. La
requête HTTP utilisée est une requête POST.
@POST
@Consumes("application/xml")
@Path("/livre/{isbn}")
public String updateLivre(@PathParam("isbn") String isbn, Livre livre)
{
for(Livre l:livres)
{
if(l.getIsbn().equals(isbn))
{
l.setIsbn(livre.getIsbn());
l.setTitre(livre.getTitre());
return "Livre modifié.";
}
}
return "Impossible de modifier le livre.";
}

Page 5 sur 7
Université de Monastir A.U : 2022 - 2023
Institut supérieur d'informatique de Mahdia Enseignants : Hamdi ALOULOU
Département Informatique Raouia Fredj
Module : SOA – TP

Testez la requête HTTP POST sur POSTMAN avec l’url :


http://localhost:8080/BibliothequeRESTEasy/bibliotheque/livre/1234-45

Supprimer un Livre :
Pour supprimer une ressource existante, on exécute une requête DELETE qui prend en paramètre
l’isbn du livre.
@DELETE
@Consumes("application/xml")
@Path("/livre/{isbn}")
public String supprimerLivre(@PathParam("isbn") String isbn)
{
for(int i=0; i<livres.size(); i++)
{
if(livres.get(i).getIsbn().equals(isbn))
{
livres.remove(i);
return "Livre supprimé.";
}
}
return "Impossible de supprimer le livre.";
}

Page 6 sur 7
Université de Monastir A.U : 2022 - 2023
Institut supérieur d'informatique de Mahdia Enseignants : Hamdi ALOULOU
Département Informatique Raouia Fredj
Module : SOA – TP

Testez la requête HTTP DELETE sur POSTMAN avec l’url :


http://localhost:8080/BibliothequeRESTEasy/bibliotheque/livre/1234-45

Page 7 sur 7

Vous aimerez peut-être aussi