Aller au contenu principal

Préparatifs pour la Création d'un RestController

Message aux apprenants​

Avant de commencer l'exercice pratique de création d'un RestController, il est essentiel que vous preniez le temps de bien lire cette section. Ce n'est pas encore le moment de coder, mais plutôt de vous préparer et de comprendre la théorie derrière ce que nous allons faire.

1. Qu'est-ce qu'un Service Web?​

Un service web est un composant logiciel qui permet à des applications de communiquer entre elles via un réseau. Il expose des fonctionnalités ou des données que d'autres applications peuvent consommer en envoyant des requêtes HTTP et en recevant des réponses.

Architecture Client-Serveur​

Flux de Communication​


2. Les Annotations en Spring Boot​

Les annotations sont des métadonnées qu'on ajoute au code pour indiquer comment certaines parties doivent se comporter. Elles permettent à Spring Boot de configurer automatiquement votre application.

Principales Annotations​

AnnotationRôleExemple
@RestControllerIndique que la classe est un contrôleur REST qui gère les requêtes HTTP et retourne des réponses au format JSON ou XML@RestController public class CardController
@RequestMappingAssocie une URL de base à une classe ou une méthode@RequestMapping("/cards")
@GetMappingSpécifie qu'une méthode répond aux requêtes HTTP GET@GetMapping("/hello")
@PostMappingSpécifie qu'une méthode répond aux requêtes HTTP POST@PostMapping("/create")
@PutMappingSpécifie qu'une méthode répond aux requêtes HTTP PUT@PutMapping("/update")
@DeleteMappingSpécifie qu'une méthode répond aux requêtes HTTP DELETE@DeleteMapping("/delete")

Hiérarchie des Annotations​


3. Modèle (Model) et Contrôleur (Controller)​

Le Modèle​

Un Modèle est une classe Java qui représente une entité métier. Il contient les attributs et les méthodes pour gérer les données.

Exemple: Modèle Card

Code Java correspondant:

public class Card {
private int cardId;
private int customerId;
private String cardNumber;
private String cardType;
private int totalLimit;
private int amountUsed;
private int availableAmount;
private String createDt;

// Getters et Setters
}

Le Contrôleur​

Un Contrôleur est une classe qui gère les requêtes HTTP entrantes et retourne des réponses. Il fait le lien entre le client et la logique métier.

Exemple: Contrôleur CardController

Code Java correspondant:

@RestController
@RequestMapping("/cards")
public class CardController {

@GetMapping("/hello")
public String helloCard() {
return "Hello, Card!";
}

@GetMapping("/{id}")
public Card getCard(@PathVariable int id) {
// Logique pour récupérer une carte
}

@PostMapping
public Card createCard(@RequestBody Card card) {
// Logique pour créer une carte
}
}

Architecture MVC avec Spring Boot​


4. Prérequis Techniques​

Avant de commencer l'exercice pratique, assurez-vous que votre environnement de développement est correctement configuré.

Vérification des Outils​

1. Java Development Kit (JDK)​

Version requise: Java 17 ou supérieure

Vérification:

java -version

Résultat attendu:

java version "17.0.x" ou supérieure

2. Apache Maven​

Version requise: Maven 3.9 ou supérieure (recommandé pour la stabilité)

Vérification:

mvn -version

Résultat attendu:

Apache Maven 3.9.x ou supérieure
Java version: 17.x.x

Note: Maven 3.9+ offre une meilleure stabilité et compatibilité avec Java 17+.

3. Visual Studio Code​

Extensions requises:

  • Extension Pack for Java
  • Spring Boot Extension Pack

Diagramme de l'Environnement de Développement​


5. Plan de l'Exercice Pratique​

Objectif​

Apprendre à créer un contrôleur REST pour gérer les requêtes HTTP en créant une application Spring Boot complète.

Étapes de l'Exercice​

Détails des Étapes​

Étape 1: Configuration du Projet​

Utiliser Spring Initializr pour générer un projet Spring Boot avec:

  • Project: Maven
  • Language: Java
  • Spring Boot Version: 3.x
  • Dependencies: Spring Web, Spring Boot DevTools

Étape 2: Création du Modèle​

Créer une classe Card dans le package model avec les attributs nécessaires.

Étape 3: Création du Contrôleur​

Créer une classe CardController dans le package controller avec:

  • Annotation @RestController
  • Annotation @RequestMapping("/cards")
  • Méthodes avec @GetMapping, @PostMapping, etc.

Étape 4: Compilation et Exécution avec Maven​

Commandes Maven essentielles:

Option 1: Commandes séparées

# Nettoyer le projet
mvn clean

# Compiler et installer (sans tests)
mvn install -DskipTests

# Exécuter l'application
mvn spring-boot:run

Option 2: Commande combinée (RECOMMANDÉE)

# Tout en une seule commande
mvn clean install -DskipTests spring-boot:run

Explication des commandes:

  • mvn clean : Supprime les fichiers compilés précédents
  • mvn install : Compile le projet et crée le fichier JAR
  • -DskipTests : Ignore l'exécution des tests (plus rapide pour le développement)
  • spring-boot:run : Démarre l'application Spring Boot

Note: La commande combinée est plus efficace car elle exécute tout le cycle en une seule fois.

Étape 6: Test​

Tester les endpoints:

  • http://localhost:8080/cards/hello
  • Utiliser Postman pour tester les autres méthodes

6. Structure du Projet Spring Boot​


7. Cycle de Vie d'une Requête HTTP​


Concepts Clés à Retenir​

1. Séparation des Responsabilités​

2. Annotations Spring Boot​

  • @RestController = @Controller + @ResponseBody (retourne automatiquement du JSON)
  • @RequestMapping définit le chemin de base
  • @GetMapping/@PostMapping/@PutMapping/@DeleteMapping correspondent aux méthodes HTTP

3. Format de Réponse​

Par défaut, Spring Boot convertit automatiquement les objets Java en JSON grâce à Jackson.


Conclusion​

Cette lecture préparatoire vous a fourni:

  • Une compréhension des services web et de leur fonctionnement
  • La connaissance des annotations Spring Boot essentielles
  • La distinction entre Modèle et Contrôleur
  • Les prérequis techniques nécessaires
  • Un aperçu du plan de l'exercice pratique

Vous êtes maintenant prêt à passer à l'exercice pratique où vous allez créer votre premier RestController!

Important: Si quelque chose n'est pas clair, n'hésitez pas à relire cette section ou à poser des questions. Une bonne compréhension théorique facilitera grandement la pratique.