🛢️Parcours Fioul GroupéSpring Boot · Chapitre 06
Accueil › Spring Boot › Chapitre 06
Chapitre 06 / 19 · projet

Projet — la couche Web

On construit les contrôleurs de l'API Fioul Groupé et les DTO d'entrée/sortie, avec un contrat clair et des réponses bien typées.

1 Étape

Les DTO d'entrée et de sortie

On sépare l'objet exposé (DTO) de l'entité stockée. En sortie, un CampagneDTO avec les champs calculés ; en entrée, des DTO de création.

public record CampagneDTO(String id, String zone, Statut statut,
    Instant dateLimite, int volumeTotal, BigDecimal prixLitre) {}

public record CreerCommandeDTO(int litres, String commune, String adresse) {}
2 Étape

Le CampagneController

Il délègue tout au service ; aucune logique métier ici.

@RestController @RequestMapping("/api/campagnes")
public class CampagneController {
    private final CampagneService service;
    public CampagneController(CampagneService s) { service = s; }

    @GetMapping
    public List<CampagneDTO> lister(@RequestParam(required=false) String zone) {
        return service.listerOuvertes(zone);
    }
    @GetMapping("/{id}")
    public CampagneDTO consulter(@PathVariable String id) { return service.consulter(id); }
}
3 Étape

Une sous-ressource : les commandes

« Rejoindre une campagne » agit sur une sous-ressource : POST /campagnes/{id}/commandes.

@PostMapping("/{id}/commandes")
@ResponseStatus(HttpStatus.CREATED)
public CampagneDTO rejoindre(@PathVariable String id, @RequestBody CreerCommandeDTO dto) {
    return service.rejoindre(id, dto);
}
4 Pratique

Formaliser le contrat

On documente chaque endpoint : URL, entrée, sortie, codes. Swagger sert de contrat vivant, testable depuis le navigateur.

🛢️ Sur le projet Fioul Groupé

Implémente les contrôleurs et DTO, teste dans Swagger. À ce stade le service peut renvoyer des données factices ; on branchera la vraie base aux chapitres 9-10.

À retenir
  • DTO séparés de l'entité, en entrée et en sortie.
  • Le contrôleur délègue au service, sans logique métier.
  • Sous-ressource pour « rejoindre » ; contrat documenté via Swagger.
← Chapitre 05