View on GitHub

lp4-2019

Bonnes pratiques pour le controller

A lire

https://stackoverflow.blog/2020/03/02/best-practices-for-rest-api-design/

Séparation des taches

Le controller est le point d’accès au backend. Son but est :

Pour simplifier la maintenance du projet, il est important de bien séparer les taches, notamment les méthodes du controller doivent transmettre à des services toute la logique métier.

Par exemple lorsqu’on ajoute un nouvel objet en base et qu’il faut faire des contrôles avant de faire cet ajout (par exemple pour vérifier que des critères sont remplis), ces contrôles (la logique métier) doit se faire dans des services à part.

C’est aussi un pas vers junit, car on sait exactement ce que doit faire le controller et ce que l’on doit tester. Pour reprendre l’exemple, on ne teste pas les critères de contrôle qui sont de la logique métier (donc testée dans le service).

Simplification des endpoints

Une bonne pratique est d’utiliser un minimum de endpoints différents. Pour cela on utilise des verbes http pour distinguer les requetes.

Réponses du controller

Une solution simple pour envoyer des réponses bien formatées est que les signatures des méthodes du controller renvoient directement les objets demandés. Sping va ensuite se charger de wrapper la réponse dans un json :

Exemples

https://github.com/jtobelem-simplon/hibernate-many-to-many

https://github.com/jtobelem-simplon/toh-backend-tests

@author Josselin Tobelem