Préambule

La démonstration 2 du TD 1 comporte des faiblesses au niveau du code, ainsi que des situations non traitées, avec notamment :

L'objectif de ce cours est de présenter comment traiter ces deux points particuliers, tout en décrivant quelques fonctionnalités bien pratiques, à savoir la pagination des résultats de requête, le paramétrage "manuel" d'une réponse http, ou encore la lecture d'un fichier csv (soit intégré à l'application, soit uploadé) pour remplir la BdD

Le projet de démonstration des points abordés est téléchargeable ci-dessous :

springboot-td2-src.tgz


1°/ Gestion d'erreurs

Par défaut, si une route demandée n'est pas valide, ou qu'il y a une erreur interne qui génère une exception, spring renvoie au client une page html basique. Dans le cas d'une API REST, c'est plutôt génant puisqu'il faudrait plutôt renvoyer un objet JSON représentant l'erreur, avec au minimum un descriptif de l'erreur.

Il est relativement simple de changer ce comportement par défaut, en ajoutant quelques classes pour représenter les cas d'erreur ainsi que ces classes qui vont "intercepter" les exceptions non traitées pour en faire des réponses http comme on le désire. Plus en détail, il s'agit au minimum de :

Au delà de ce minimum, il est conseillé de mettre en place une stratégie de gestion des erreurs plus complète, avec par exemple :

Dans la démonstration, ces différents points sont utilisés, avec en premier lieu la classe ErrorList dont voici un extrait :