
Création d'un premier contrôleur REST simple (`@RestController`, `@GetMapping`)
Apprenez à créer un endpoint REST simple dans Spring Boot en utilisant les annotations @RestController et @GetMapping pour répondre aux requêtes HTTP GET.
Introduction aux contrôleurs REST dans Spring Boot
Au coeur de nombreuses applications web modernes se trouvent les API RESTful (Representational State Transfer). Elles permettent à différents systèmes (navigateurs web, applications mobiles, autres serveurs) de communiquer entre eux via le protocole HTTP standard. Dans Spring Boot, la création de ces API est grandement facilitée par le module Spring Web MVC et ses annotations dédiées. Le composant central chargé de recevoir les requêtes HTTP entrantes et de retourner les réponses appropriées est appelé un contrôleur.
Pour créer spécifiquement un contrôleur destiné à exposer des endpoints REST, Spring fournit l'annotation @RestController. Il s'agit d'une annotation de commodité qui combine deux autres annotations importantes : @Controller et @ResponseBody. L'annotation @Controller marque la classe comme un composant Spring capable de gérer les requêtes web. L'annotation @ResponseBody, quant à elle, indique que la valeur retournée par les méthodes de ce contrôleur doit être directement écrite dans le corps de la réponse HTTP, généralement convertie en format JSON ou XML, sans passer par un mécanisme de résolution de vue (comme Thymeleaf ou JSP).
En utilisant @RestController, vous signalez clairement l'intention de votre classe : elle fait partie de la couche web et est spécifiquement conçue pour construire une API REST. Spring Boot, grâce à l'auto-configuration, s'assurera que les bibliothèques nécessaires (comme Jackson pour la conversion JSON) sont configurées pour sérialiser vos objets Java en réponses HTTP appropriées.
Gérer les requêtes GET avec @GetMapping
Une fois que vous avez défini votre classe comme un @RestController, vous devez spécifier quelles méthodes doivent gérer quelles requêtes HTTP. Pour les requêtes utilisant la méthode HTTP GET (typiquement utilisées pour récupérer des données), Spring fournit l'annotation @GetMapping. Cette annotation est elle-même une version spécialisée de @RequestMapping(method = RequestMethod.GET).
L'annotation @GetMapping s'applique au niveau de la méthode. Son attribut principal (et souvent le seul utilisé pour des cas simples) est value (ou simplement la chaîne de caractères directement), qui définit le chemin (path) de l'URL auquel cette méthode répondra. Par exemple, @GetMapping("/hello") signifie que cette méthode sera invoquée lorsqu'une requête GET est envoyée à l'URL /hello relative au contexte de votre application.
La valeur retournée par une méthode annotée avec @GetMapping dans un @RestController sera automatiquement convertie (généralement en JSON si c'est un objet) et placée dans le corps de la réponse HTTP avec un code de statut 200 OK par défaut. Pour commencer, nous pouvons simplement retourner une chaîne de caractères.
Exemple : un premier contrôleur "Hello World"
Mettons ces concepts en pratique. Créez une nouvelle classe Java dans un sous-package approprié (par exemple, com.votreentreprise.votreprojet.controller) :
package com.certiquizz.monappliboot.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
// Marque cette classe comme un contrôleur REST
@RestController
public class HelloController {
// Mappe les requêtes HTTP GET vers le chemin "/greeting"
@GetMapping("/greeting")
public String sayHello() {
// La chaîne retournée sera le corps de la réponse HTTP
return "Bonjour de la part de Spring Boot!";
}
// Autre exemple sur la racine "/"
@GetMapping("/")
public String home() {
return "Bienvenue sur l'application Spring Boot!";
}
}
Dans cet exemple simple :
- La classe
HelloControllerest annotée avec@RestController, la rendant détectable par le scan des composants de Spring et configurant ses méthodes pour retourner directement des données dans la réponse. - La méthode
sayHello()est annotée avec@GetMapping("/greeting"). Elle sera exécutée pour toute requête GET sur/greeting. - La méthode retourne une simple chaîne de caractères. Spring Boot s'occupera de l'écrire dans la réponse HTTP avec le type de contenu approprié (par défaut, `text/plain`).
- La méthode
home()gère les requêtes GET sur le chemin racine/.
Après avoir ajouté ce contrôleur, vous pouvez démarrer (ou redémarrer) votre application Spring Boot. Une fois démarrée, ouvrez votre navigateur web ou utilisez un outil comme `curl` ou Postman pour accéder aux URL :
http://localhost:8080/greeting(en supposant que votre application tourne sur le port 8080) devrait afficher : `Bonjour de la part de Spring Boot!`http://localhost:8080/devrait afficher : `Bienvenue sur l'application Spring Boot!`
C'est aussi simple que cela de créer un premier endpoint REST avec Spring Boot ! Cette base vous permet maintenant d'explorer des fonctionnalités plus avancées comme la gestion des paramètres, la réception de données et le retour d'objets complexes.