Chapitre 3 : Spring Boot
(... contenu précédent ...)
🧩 Partie C – API REST avec Spring Boot
Spring Boot facilite la création d'API REST conformes aux bonnes pratiques RESTful, grâce aux annotations
simplifiées comme @RestController , @GetMapping , @PostMapping , etc. Le format de réponse est
par défaut du JSON, et le mappage automatique est géré par Jackson.
C.1. @RestController vs @Controller
• @Controller : sert à retourner une vue (JSP, Thymeleaf)
• @RestController : retourne directement des données (JSON, XML)
Exemple p06 :
@RestController
@RequestMapping("/api/authors")
public class AuthorRestController {
private final AuthorService service;
public AuthorRestController(AuthorService service) {
this.service = service;
}
@GetMapping
public List<Author> getAllAuthors() {
return service.getAllAuthors();
}
@GetMapping("/{id}")
public Author getById(@PathVariable int id) {
return service.getAuthorById(id);
}
}
➡️ Cette classe expose deux endpoints REST : /api/authors et /api/authors/{id}
1
C.2. Méthodes HTTP : @GetMapping , @PostMapping , etc.
Spring Boot fournit des raccourcis pour chaque verbe HTTP :
• @GetMapping : lecture de ressource
• @PostMapping : création
• @PutMapping : mise à jour
• @DeleteMapping : suppression
Exemple p06 : créer un auteur
@PostMapping
public Author create(@RequestBody Author a) {
return service.save(a);
}
➡️ Les données JSON envoyées par le client sont automatiquement converties en objet Java via
@RequestBody
C.3. ResponseEntity pour les réponses HTTP structurées
ResponseEntity<T> permet de contrôler le corps de la réponse, le code HTTP, et les en-têtes.
@GetMapping("/{id}")
public ResponseEntity<Author> getById(@PathVariable int id) {
Author a = service.getAuthorById(id);
if (a == null)
return ResponseEntity.notFound().build();
return ResponseEntity.ok(a);
}
➡️ Permet de retourner un code 404 si l'auteur n'existe pas.
C.4. Gestion des erreurs REST
Spring permet de gérer globalement les exceptions via @ControllerAdvice et @ExceptionHandler .
@ControllerAdvice
public class GlobalHandler {
@ExceptionHandler(RuntimeException.class)
public ResponseEntity<String> handleError(RuntimeException e) {
return ResponseEntity.status(500).body("Erreur : " + e.getMessage());
2
}
}
➡️ Toute exception non gérée sera interceptée ici et renvoyée avec un message personnalisé.
✅ Bilan projet p06
Fonctionnalité REST Annotation Spring Boot Réalisé dans
GET all @GetMapping AuthorRestController
GET by ID @PathVariable AuthorRestController
POST (create) @PostMapping + @RequestBody AuthorRestController
Gestion 404 / erreur ResponseEntity , @ExceptionHandler GlobalHandler
Souhaites-tu que je continue avec la Partie D – Moteur de vues avec Thymeleaf (projet p06) ?