0% ont trouvé ce document utile (0 vote)
18 vues38 pages

9 - Spring C - REST PDF

Transféré par

ghassen.massaoud
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)
18 vues38 pages

9 - Spring C - REST PDF

Transféré par

ghassen.massaoud
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

SPRING MVC

UP ASI
Bureau E204

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 1


Plan du Cours

▪ Spring MVC ( Définition + Spring web)


▪ Les architectures physiques et logiques
▪ Serveur web vs. Serveur d’application
▪ Postman
▪ Dépendance web
▪ Cycle de Vie d’une requête HTTP (Spring Boot + Postman)
▪ RestController
– TP Spring Boot + Spring Data JPA + Spring MVC (REST) + Postman

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 2


Introduction

• Un Conteneur de Servlets (Servlet container en anglais) ou Conteneur Web


(web container en anglais) est un logiciel qui exécute des servlets.

• Un ou une Servlet est une classe Java qui permet de créer


dynamiquement des données au sein d'un serveur HTTP.

• Il existe plusieurs conteneurs de servlets, dont Apache Tomcat ou encore


Jetty. Le serveur d'application JBoss Application Server(Wildfly) utilise
Apache Tomcat.

• Nous allons nous intéresser au développement de la couche Web (Web


Services REST + Contrôleur + Service + Repository) dans ce cours.
• Nous allons aussi pratiquer la consommation des services par Postman.

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 3


Introduction

• Plusieurs Projets Spring permettent d’implémenter des applications Web :

• Framework Spring (qui contient Spring MVC)


• Spring Web Flow (Implémenter les navigations Stateful).
• Spring mobile (Détecter le type de l’appareil connecté).
• Spring Social (Facebook, Twitter, LinkedIn).
• …

• Nous allons nous intéresser à Spring MVC.

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 4


SPRING MVC

• Spring MVC est un Framework Web basé sur le design pattern MVC (Model
/ View / Controller).

• Spring MVC fait partie du projet “Spring Framework”.

• Spring MVC s'intègre avec les différentes technologies de vue tel que JSF,
JSP, Velocity, Thymeleaf...

• Spring MVC n’offre pas une technologie de vue mais permet en revanche
de communiquer avec toutes les technologies web les plus performantes
tels que Angular, React, etc...

• Spring MVC est construit en se basant sur la spécification JavaEE : Java


Servlet.

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 5


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.

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 6


Architecture 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 machine et les couches 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.

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 7


Architecture 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 architecture Client / Serveur.


• Client = demandeur de ressource
• Serveur = fournisseur de ressource

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

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 8


Architecture 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
• Centraliser la logique application sur un serveur HTTP
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ésout le problème du client lourd de
l’architecture deux tiers, le soulagement du client est remplacé par un
serveur fortement sollicité.

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 9


Architecture 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 serveur web (Tomcat, …) qui contient le WAR de
notre application.
– Niveau Base de données : Un serveur de BD qui stocke les données de
notre application.

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 10


Architecture 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 Esprit 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) :

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 11


Architecture Physique - N-Tiers

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 12


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

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 13


Architecture logique

• Une application typique utilisant Spring est généralement


structurée en trois couches :

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


– Couche Service : interface métier avec mise en œuvre de
certaines fonctionnalités.
– Couche Accès aux Données : recherche et persistance des objets.

• Spring est un Framework utilisé pour créer et injecter les objets


requis pour communiquer entre les différentes couches.

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 14


Serveur Web vs Serveur d’Application

Serveur Web Serveur d’application JavaEE


Serveur web + EJB container

Héberge que la couche présentation et l’expose qu’à travers le Héberge la logique métier et peut aussi héberger la couche
protocole HTTP(S) présentation (supporte différents protocoles : HTTP, JNDI,
...).

Ne peut pas inclure un EJB Container. Doit inclure un EJB Container.

lightweight Relativement gourmand en ressources (CPU, RAM et Disk).

Exp : Apache HTTP Server, Tomcat, Jetty .... Exp : Wildfly, WebSphere ...

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 15


Serveur Web vs Serveur d’Application

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 16


Serveur Web vs Serveur d’Application

Spring IOC Container

Dans une application Spring, les objets sont créés, sont liés ensembles et
communiquent dans le Spring IOC Container.

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 17


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 interface graphique agréable.

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


stocker dans un historique afin de pouvoir les rejouer.

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 18


Postman

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 19


Postman

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 20


Dépendance web

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


web notamment ceux liées à Spring MVC et l’exposition des web
services.

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 21


Cycle de Vie d’une requête HTTP
(Spring Boot + Postman)

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 22


Cycle de Vie d’une requête HTTP
(Spring Boot + Postman)

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 23


RestController

• Dans ce fichier de properties ajouter les lignes suivantes, pour définir l’url de
notre application :

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

• Cela permet de créer une partie de l’url que nous allons utiliser sur postman :
[Link]

• Le path complet sera crée au niveau de notre couche controller comme


présentée dans le slide suivant :

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 24


RestController

@RestController
@AllArgsConstructor
@RequestMapping("/equipe")
public class EquipeRestController {
IEquipeService equipeService;
// [Link]
@GetMapping("/retrieve-all-equipes")
public List<Equipe> getEquipes() {
List<Equipe> listEquipes = [Link]();
return listEquipes;
}

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 25


TP - Spring : Boot – Core – Data JPA – MVC (REST)

• Nous allons commencer par exposer des Web Service REST :


Spring Boot – Core – Data JPA – MVC (REST) -Postman

• Vous avez déjà créé un projet : Spring (Boot – Core – Data JPA)
avec un CRUD.

• Nous allons reprendre le même projet (étude de cas kaddem)


et exposer ces méthodes (CRUD) avec des Web Servie REST.

• Ces Web Services seront testé avec Postman.

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 26


TP - Spring : Boot – Core – Data JPA – MVC (REST)

• Installation de Postman :

• L’exécutable est sur le Drive du cours Spring (dossier Outils), à


télécharger et à installer.

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 27


TP - Spring : Boot – Core – Data JPA – MVC (REST)

• Vérifier que le fichier de properties contient les propriétés nécessaires (web,


base de données, log4j, …) :

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

### DATABASE ###

[Link]=jdbc:mysql://localhost:3306/springdb?useUnicode=true
&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
[Link]=root
[Link]=
### JPA / HIBERNATE ###
[Link]-sql=true
[Link]-auto=update
[Link]=[Link].MySQL5Dialect

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 28


TP - Spring : Boot – Core – Data JPA – MVC (REST)

#logging configuration
# Spécifier le fichier externe ou les messages sont stockés
[Link]=D:/spring_log_file.log
# Spécifier la taille maximale du fichier de journalisation
[Link]-size= 100KB
# spécifier le niveau de Log
[Link]=INFO
# Spécifier la forme du message
[Link]=%d{yyyy-MM-dd HH:mm:ss} - %-5level - %logger{36} - %msg%n

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 29


TP - Spring : Boot – Core – Data JPA – MVC (REST)

• Créer le package [Link]

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

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


suivantes) :

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 30


TP - Spring : Boot – Core – Data JPA – MVC (REST)

@RestController
@AllArgsConstructor
@RequestMapping("/equipe")
public class EquipeRestController {
IEquipeService equipeService;
// [Link]
@GetMapping("/retrieve-all-equipes")
public List<Equipe> getEquipes() {
List<Equipe> listEquipes = [Link]();
return listEquipes;
}

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 31


TP - Spring : Boot – Core – Data JPA – MVC (REST)

// [Link]
@GetMapping("/retrieve-equipe/{equipe-id}")
public Equipe retrieveEquipe(@PathVariable("equipe-id") Integer equipeId) {
return [Link](equipeId);
}

// [Link]
@PostMapping("/add-equipe")
public Equipe addEquipe(@RequestBody Equipe e) {
Equipe equipe = [Link](e);
return equipe;
}

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 32


TP - Spring : Boot – Core – Data JPA – MVC (REST)

// [Link]
@DeleteMapping("/remove-equipe/{equipe-id}")
public void removeOperateur(@PathVariable("equipe-id") Long equipeId) {
[Link](equipeId);
}

// [Link]
@PutMapping("/update-equipe")
public Equipe updateEtudiant(@RequestBody Equipe e) {
Equipe equipe= [Link](e);
return equipe;
}
}

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 33


TP - Spring : Boot – Core – Data JPA – MVC (REST)

Réponse web service sur le navigateur

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 34


TP - Spring : Boot – Core – Data JPA – MVC (REST)

Réponse web service sur Postman

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 35


© 2022-2023 – ESPRIT – ARCHITECTURE DES SI II SPRING – Spring Data JPA – 1ere Entité 36
Travail à faire

Spring MVC

Exposer les services implémentés dans l’étude de cas Kaddem avec Postman
pour les tester.

© 2022-2023 – ESPRIT – Module Architecture des SI II (Spring) étude de cas gestion magasin-stock 37
SPRING MVC

Si vous avez des questions, n’hésitez pas à nous


contacter :

Département Informatique
UP ASI
Bureau E204

© 2022-2023 – ESPRIT – Module Architecture des SI II Spring – Spring MVC 38

Vous aimerez peut-être aussi