Contrôleurs REST & verbes HTTP
@RestController + @RequestMapping définissent un contrôleur et son URL de base. Chaque verbe a son annotation.
@RestController @RequestMapping("/api/campagnes") public class CampagneController { @GetMapping // lire @PostMapping // créer @PutMapping("/{id}") // modifier @DeleteMapping("/{id}")// supprimer }
Recevoir des paramètres
@PathVariable— dans le chemin (/campagnes/{id}).@RequestParam— après le?(?zone=Ladignac).@RequestBody— le corps JSON d'un POST/PUT.
@GetMapping public List<CampagneDTO> lister(@RequestParam(required=false) String zone) { ... }
Les codes de statut HTTP
Une bonne API renvoie le bon code : 200 OK, 201 Created, 204 No Content, 400 requête invalide, 404 non trouvé, 409 conflit. On utilise ResponseEntity pour les maîtriser.
return ResponseEntity.status(HttpStatus.CREATED).body(dto);
Gérer les erreurs proprement
Un @RestControllerAdvice centralise la transformation des exceptions en réponses HTTP lisibles.
@RestControllerAdvice public class GestionErreurs { @ExceptionHandler(CampagneIntrouvable.class) @ResponseStatus(HttpStatus.NOT_FOUND) public Map<String,String> introuvable(CampagneIntrouvable e) { return Map.of("erreur", e.getMessage()); } }
🛢️ Sur le projet Fioul Groupé
Conçois le contrat de l'API : URLs, verbes, codes attendus (201 à la création d'une commande, 409 si la campagne est clôturée, 404 si l'id n'existe pas). C'est le jalon « couche Web » du chapitre 6.
À retenir
- Un verbe HTTP = une annotation (
@GetMapping…). - Paramètres :
@PathVariable,@RequestParam,@RequestBody. - Bons codes de statut ; erreurs centralisées avec
@RestControllerAdvice.