0% ont trouvé ce document utile (0 vote)
2 vues32 pages

11-WS REST Avec Spring

Le document présente un cours sur la création de services web REST avec le framework Spring, en abordant les architectures physiques (1-Tier, 2-Tiers, 3-Tiers, N-Tiers) et logiques d'application. Il décrit également la mise en place d'une application utilisant Spring Boot, Spring Data JPA et Postman pour tester les services. Enfin, il inclut des exemples de code pour la création de services CRUD et leur exposition via un contrôleur REST.

Transféré par

yassinearfaoui131
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)
2 vues32 pages

11-WS REST Avec Spring

Le document présente un cours sur la création de services web REST avec le framework Spring, en abordant les architectures physiques (1-Tier, 2-Tiers, 3-Tiers, N-Tiers) et logiques d'application. Il décrit également la mise en place d'une application utilisant Spring Boot, Spring Data JPA et Postman pour tester les services. Enfin, il inclut des exemples de code pour la création de services CRUD et leur exposition via un contrôleur REST.

Transféré par

yassinearfaoui131
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

Web Servic es REST avec SPRING

Web Servic es REST avec SPRING

Module Spring – WS REST avec Spring


1
Plan du Cours

▪ Architecture Physique
▪ Architecture Logique
▪ Architecture Physique de notre Application
▪ Web services avec Spring (@Servic e +@RestC ontroller)
▪ Test des WS avec Postman

– TP Spring Boot +Spring Data JPA +WS REST +Postman

Module Spring – WS REST avec Spring


2
Architecture Physique

• Tier est un mot anglais qui signifie étage ou niveau.

• Une application peut être 1-Tier, 2-Tiers, 3-Tiers ou N-Tiers.

Module Spring – WS REST avec Spring


3
Archite cture Physique - 1-Tiers

• Une application 1-Tier est, par exemple, la Modification d’un


document Word sur un ordinateur Local.
• Tout est sur la même mac hine et les c ouc hes sont fortement liées.
• Inconvénients :Risque de perte des données (non sauvegardées à
distance), Impossible d’accéder à une même ressource par deux
utilisateurs en même temps.

Module Spring – WS REST avec Spring


4
Archite cture Physique - 2-Tiers

• Une application 2-Tiers est typiquement une application client lourd.

• Le niveau Présentation (IHM) et le niveau Traitement sont sur la machine


de l’utilisateur.
• Le niveau Base de Données est sur un autre serveur.

• C ’est une arc hitec ture C lient / Serveur.


• C lient =demandeur de ressourc e
• Serveur =fournisseur de ressourc e

Inconvénients
• Toute mise à jour des fonctionnalités nécessite un déploiement sur toutes
les mac hines des utilisateurs.
• Le serveur ne fait pas appel à une autre application pour fournir le service.

Module Spring – WS REST avec Spring


5
Archite cture Physique - 3-Tiers

• Une application 3-Tiers introduit un niveau intermédiaire ( middleware) entre


le client et le serveur.
• Le niveau intermédiaire est chargé de fournir la ressource en faisant appel à
un autre serveur.

Avantages
• Centraliserla logique application sur un serveurHTTP
Inconvénients
• Le serveur HTTP ( élément principal de l’architecture )est fortement sollicité
d’où une charge de demandes provenant à la fois du client et du serveur.
• Bien que cette architecture résolve le problème du client lourd de
l’architecture deux tiers, le soulagement du client est remplacé par un
serveurfortement sollicité.

Module Spring – WS REST avec Spring


6
Archite cture Physique - 3-Tiers

• Une application 3-Tiers est typiquement une application Web :

– Niveau Présentation : IHM (Navigateur sur la machine de l’utilisateur)


– Niveau Traitement : Un serveurweb (Tomc at, …) qui c ontient le WAR de
notre applic ation.
– Niveau Base de données : Un serveur de BD qui stocke les données de
notre application.

Module Spring – WS REST avec Spring


7
Archite cture Physique - N-Tiers

• L’architecture N tiers assure un équilibre de charge entre le client et le


serveur par l’introduction de nouvelles couches.
• Voici une architecture 4-Tiers d’une application web développée par un
étudiant FST pendant son projet de fin d’étude (GUI – Angular sur le Serveur
NodeJS – Spring Boot (Serveur Web Tomcat embarqué) – Serveur de base de
données MySQL) :

Module Spring – WS REST avec Spring


8
Archite cture Physique - N-Tiers

Module Spring – WS REST avec Spring


9
Archite cture Physique - N-Tiers
• Voici une architecture n-Tiers, en Micro-Servcies, d’une application web
développée par un étudiant pendant son projet de fin d’étude :GUI /
NodeJS/ Spring Boot / DB

Module Spring – WS REST avec Spring


10
Architecture Physique de notre Application

Module Spring – WS REST avec Spring


11
Architecture logique
• Une application typique utilisant Spring est généralement structurée en couches (5
couches : Web / Controller / Service / Repository / Entité) au lieu de l’architecture
logique simplifiée en 3 couches (Présentation / Service / Accès aux Données) :

– Couche Web (non fournie par Spring)


– Couche Contrôleur
 Couche Présentation (Web + Contrôleur)

– Couche Service : interface métier avec mise en œuvre de certaines


fonctionnalités.
– Couche Repository (Recherche et Persistance des objets, CRUD)
 Couche Métier (Service + Repository)

– Couche Entités (Modèle de données)

• Spring est un Framework utilisé pour créer et injecter les objets requis pour
communiquer entre les différentes couches (Injection de Dépendances).
Module Spring – WS REST avec Spring
12
WSRESTavec Spring +Postman

Nous allons mettre en place une application qui suit l’architecture


logique (multi-couches) et physique (N-tiers) décrites ci-dessus.

Module Spring – WS REST avec Spring


13
Postman

• Parmi les nombreuses solutions pour interroger ou tester les web services
et les API, Postman propose de nombreuses fonctionnalités, une prise en
main rapide et une interfa c e gra phique a gréable.

• Postman permet de construire et d’exécuter des requêtes HTTP, de les


stocker dans un historique afin de pouvoir les rejouer.

Module Spring – WS REST avec Spring


14
Postman

Module Spring – WS REST avec Spring


15
Dépendanc e web

• Le starter web permet d’ajouter toutes les dépendances liées à la partie


web notamment celles liées à Spring M V C et l’exposition des web
services.

Module Spring – WS REST avec Spring


16
Url de notre Applic ation Web

• Dans le fichier de properties [Link], ajouter les lignes suivantes,


pour définir l’url de notre application :

#Server configuration
[Link]=8089
[Link]-path=/foyer

Module Spring – WS REST avec Spring


17
TP - Spring :Boot – Core – Data JPA – WSREST

• Nous a llons exposer des Web Servic e REST:

• Nous allons reprendre le même projet « tp-foyer »et exposer les


méthodes (CRUD) avec des Web Servic e REST.

• Ces Web Services seront testés avec Postman et avec Spring


Doc (Swagger) (voir support de cours suivant pour Swagger).

Module Spring – WS REST avec Spring


18
TP - Spring :Boot – Core – Data JPA – WSREST

• Installa tion de Postma n :

• Téléc harger et à installer Postma n.

Module Spring – WS REST avec Spring


19
TP - Spring :Boot – Core – Data JPA – WSREST

• Vérifier que le fichier de properties contient les propriétés nécessaires (web, base
de données, …) :

# DB Configuration :
[Link]=jdbc:mysql://localhost:3306/tpfoyerdb?createDatabaseIfNotExist=true
[Link]=root
[Link]=
[Link]-sql=true
[Link]-auto=update
# Server configuration :
[Link]=8089
[Link]-path=/tpfoyer

Module Spring – WS REST avec Spring


20
TP - Spring :Boot – Core – Data JPA – WSREST

• Nous allons créer le Service ChambreServiceImpl et l’injecter dans le


contrôleur.

• Créerlespac kage [Link] e

• Créer l’interface IChambreService


• Créer le bean Spring ChambreServiceImpl annoté @Service qui implémente
l’interfac e IChambreServic e

• Créer le CRUD dans le Service (voir pages suivantes) :

Module Spring – WS REST avec Spring


21
TP - Spring :Boot – Core – Data JPA – WS REST

package [Link];

import [Link];

import [Link];

public interface IChambreService {

public List<Chambre> retrieveAllChambres();


public Chambre retrieveChambre(Long chambreId);
public Chambre addChambre(Chambre c);
public void removeChambre(Long chambreId);
public Chambre modifyChambre(Chambre chambre);

// Here we will add later methods calling keywords and methods calling JPQL

Module Spring – WS REST avec Spring


22
TP - Spring :Boot – Core – Data JPA – WSREST
@Service
@AllArgsConstructor
public class ChambreServiceImpl implements IChambreService {

ChambreRepository chambreRepository;

public List<Chambre> retrieveAllChambres() {


return [Link]();
}
public Chambre retrieveChambre(Long chambreId) {
return [Link](chambreId).get();
}
public Chambre addChambre(Chambre c) {
return [Link](c);
}
public void removeChambre(Long chambreId) {
[Link](chambreId);
}
public Chambre modifyChambre(Chambre chambre) {
return [Link](chambre);
}
} Module Spring – WS REST avec Spring
23
TP - Spring :Boot – Core – Data JPA – WSREST

Maintenant nous allons c réerle rest c ontrolleur:

• Créerlespac kage [Link].c ontrol

• Créer le bean Spring ChambreRestController annoté @RestController

• Créer les méthodes nécessaires pour exposer le CRUD (voir pages suivantes).

Module Spring – WS REST avec Spring


24
TP - Spring :Boot – Core – Data JPA – WSREST
@RestController
@AllArgsConstructor
@RequestMapping("/chambre")
public class ChambreRestController {

IChambreService chambreService;

// [Link]
@GetMapping("/retrieve-all-chambres")
public List<Chambre> getChambres() {
List<Chambre> listChambres = [Link]();
return listChambres;
}

// [Link]
@GetMapping("/retrieve-chambre/{chambre-id}")
public Chambre retrieveChambre(@PathVariable("chambre-id") Long chId) {
Chambre chambre = [Link](chId);
return chambre;
}
(Suite de la classe page suivante) :
Module Spring – WS REST avec Spring
25
TP - Spring :Boot – Core – Data JPA – WSREST
// [Link]
@PostMapping("/add-chambre")
public Chambre addChambre(@RequestBody Chambre c) {
Chambre chambre = [Link](c);
return chambre;
}

// [Link]
@DeleteMapping("/remove-chambre/{chambre-id}")
public void removeChambre(@PathVariable("chambre-id") Long chId) {
[Link](chId);
}

// [Link]
@PutMapping("/modify-chambre")
public Chambre modifyChambre(@RequestBody Chambre c) {
Chambre chambre = [Link](c);
return chambre;
}

}
Module Spring – WS REST avec Spring
26
TP - Spring :Boot – Core – Data JPA – WSREST

• Tester l’ensemble des méthodes exposées, avec Postman

• La séanc e prochaine, les web servic esexposés seront testés


avec Spring Doc (Swagger).

Module Spring – WS REST avec Spring


27
Postman
Pour avoir la structure de l’objet JSON chambre, commencer par créer une chambre sans attributs,
puis utiliser cet objet JSON par la suite (enlever la clé primaire car auto générée) :

Module Spring – WS REST avec Spring 28


TP - Spring :Boot – Core – Data JPA – WSREST

Module Spring – WS REST avec Spring


29
Liste des Chambres( Navigateur +Postman )

Module Spring – WS REST avec Spring


30
Liste des Chambres( Navigateur +Postman )

Module Spring – WS REST avec Spring


31
WSRESTavec Spring

La séance prochaine :

• Les web servic esexposés (liés à l’entité Chambre) seront testés


avec Spring Doc (Swagger).

• Les web services liés aux autres entités seront exposés et testés
avec Postman et Spring Doc.

Module Spring – WS REST avec Spring


32

Vous aimerez peut-être aussi