Je crée actuellement une API REST pour un projet et j'ai lu article sur article sur les meilleures pratiques. Beaucoup semblent être contre les DTO et ne font qu'exposer le modèle de domaine, tandis que d'autres semblent penser que les DTO (ou les modèles utilisateur ou tout ce que vous voulez appeler) sont une mauvaise pratique. Personnellement, je pensais que cet article avait beaucoup de sens.
Cependant, je comprends également les inconvénients des DTO avec tout le code de mappage supplémentaire, des modèles de domaine qui pourraient être 100% identiques à leur homologue DTO, etc.
Notre API est principalement créée pour que d'autres clients puissent consommer des données, mais si nous le faisons correctement, nous aimerions également l'utiliser pour notre propre interface graphique Web si possible.
Le fait est que nous ne souhaitons peut-être pas exposer toutes les données du domaine aux autres utilisateurs clients. La plupart des données n'auront de sens que dans notre propre application Web. En outre, nous pouvons ne pas souhaiter exposer toutes les données sur un objet dans tous les scénarios, en particulier les relations avec d'autres objets, etc. Par exemple, si nous exposons une liste d'un objet particulier, nous ne voudrions pas nécessairement exposer toute la hiérarchie d'objets; afin que les enfants de l'objet ne soient pas exposés, mais puissent être découverts via des liens (hateoas).
Comment dois-je résoudre ce problème? Je pensais utiliser les mixins de Jackson sur nos modèles de domaine pour contrôler quelles données seraient exposées dans différents scénarios. Ou devrions-nous simplement utiliser les DTO à fond - même compte tenu de ses inconvénients et de sa controverse?