Vous êtes sur la page 1sur 4

L’architecture Microservices : Les API REST

Dans le TP précédant, vous avez créé votre premier microservice qui va servir à gère des
produits. Vous avez vu comment générer le microservice et comment l’exécuter.

Nous avons maintenant besoin de changer le microservice généré pour être capable de gérer des
produits. Pour cela, il doit pouvoir exposer une API REST qui propose toutes les opérations
CRUD (Create, Read, Update, Delete).

Notre microservice va devoir être RESTful, et donc pouvoir communiquer de cette manière :

▪ Requête GET à /Produits : affiche la liste de tous les produits.


▪ Requête GET à /Produits/{id} : affiche un produit par son Id.
▪ Requête PUT à /Produits/{id} : met à jour un produit par son Id.
▪ Requête POST à /Produits : ajoute un produit.
▪ Requête DELETE à /Produits/{id} : supprime un produit par son Id

Vous devez donc avoir :

▪ Une classe Produit qui représente les caractéristiques d'un produit (nom, prix, etc.) ;
▪ Un contrôleur qui s'occupera de répondre aux requêtes CRUD et de faire les opérations
nécessaires.

Création du Contrôleur :

Nous allons créer un contrôleur « ProductController » et le placer sous le package


« web.controller » lui-même placé sous le package principal du projet déjà créé
« com.ecommerce.microcommerce ».

1- Faites un clic droit sur le package principal, puis New -> Class
2- Complétez l’espace package pour avoir
« com.ecommerce.microcommerce.web.controller »
3- Entrez le nom de la classe : « ProductController » puis validez.
4- Le nouveau package web.controller sera créé ainsi que le contrôleur
« ProductController ».
Page 1 sur 4
5- Nous allons commencer par indiquer à Spring que ce contrôleur est un contrôleur REST.
Ajoutez l’annotation adéquate au-dessus de la déclaration de la classe. Cette annotation
indique que cette classe va pouvoir traiter les requêtes que nous allons définir (GET,
POST, etc.). Elle indique aussi que chaque méthode va renvoyer directement une réponse
JSON à l'utilisateur, sans passer par une vue.

Méthode pour GET /Produits

6- Créez une simple méthode listeProduits qui retourne une string. Comme il n’existe pas
encore de produits, cette méthode va retourner une simple phrase pour tester.
7- Ajoutez une annotation @GetMapping("/Produits") au-dessus de cette méthode.

8- Lancez l’application et testez la première méthode en vous plaçant à l’URL


http://localhost:9090/Produits.

Méthode pour GET /Produits/{id}

9- Avec le même principe, vous allez créer une deuxième méthode « afficherUnProduit »
qui renvoi les détails d’un seul produit. Pour cela, on a besoin que la méthode réponde à
des URLs dynamiques qui indiquent chaque fois l’identifiant du produit à afficher. Vous
allez donc utiliser la notation {id} avec l’annotation @GetMapping. Cette notation
permet d'indiquer que cette méthode doit répondre uniquement aux requêtes avec une
URI de type /Produits/25, par exemple. Vous devez aussi utiliser l’annotation
@PathVariable avec les paramètres de la méthode pour récupérer l’identifiant du produit.
10- Testez cette nouvelle méthode avec l’URL : http://localhost:9090/Produits/25

Création du Modèle :

Page 2 sur 4
Nous avons jusqu’à ici répondu aux appels REST avec des chaines de caractères du genre « Un
exemple de produit » ou « Vous avez demandé un produit avec l’id 25 ». Ceci revient au fait
qu’on n’a pas encore un Modèle qui représente les données (ou plus anciennement Bean, ou
POJO, pour Plain Old Java Object).

Un Model est une classe classique qui doit être "sérialisable" et avoir au minimum :

▪ Un constructeur public sans arguments ;


▪ Des getters et setters pour toutes les propriétés de la classe.
11- Créez une nouvelle classe « Product » que vous allez placer dans un nouveau package
"model" sous le package microcommerce.
12- Créez ensuite les propriétés de base de la classe :

Vous allez par la suite générer un constructeur sans arguments et les getters et les setters
pour toutes les propriétés. Pour les tests, vous allez ajouter un constructeur avec toutes les
propriétés d’un produit afin d'obtenir des instances de produits préremplies avec des
informations de tests.

Utilisation du Modèle par le Contrôleur :

Vous allez modifier le Contrôleur « ProductController » et plus précisément la méthode


« afficherUnProduit » pour renvoyer un JSON qui décrit un produit au lieu du String « Vous
avez demandé un produit avec l’id XX ». La méthode est censée aller chercher le produit par l'Id
reçu dans une base de données, et le renvoyer sous format JSON. Puisque nous n’avons pas
encore de Base de Données, vous allez simuler la création de l’objet Produit en utilisant le
constructeur avec tous les paramètres que vous avez généré. Vous simulez en fait la récupération
d'un produit de la base de données.

Page 3 sur 4
13- Modifiez le code de la méthode « afficherUnProduit » pour générer un produit et le
renvoyer lorsque la méthode est appelée avec un identifiant.
14- Testez maintenant la méthode avec l’URL : http://localhost:9090/Produits/25

Page 4 sur 4

Vous aimerez peut-être aussi