Je suis en train de concevoir une API utilisant Spring boot pour un backend de réseau social. Mon modèle actuel ressemble à ceci:Conception de DTO à partir d'un modèle pour une API
public class User {
private long id;
private String handle;
private String name;
private List<User> followers;
private List<User> following;
// Getters setters etc
Maintenant, j'ai créé DTO qui ressemble étroitement à la structure ci-dessus. Mon problème est que parfois je veux retourner exactement ce qui est au-dessus (ce qui est bien) mais parfois, je ne le veux pas.
Par exemple quand quelqu'un est seulement intéressé à trouver les adeptes de l'utilisateur, je ne veux pas inclure disciples et suivants (je suis simplement intéressé par id
, handle
et name
donc calculer followers
et following
pour tous les utilisateurs seraient un incroyable gaspillage de ressources).
Dans mon implémentation actuelle, ces champs sont retournés avec des valeurs null
, ce qui n'est pas une bonne idée, selon moi. Devrais-je créer un DTO distinct sans ces listes avec seulement id
, handle
et name
? Ou y at-il une façon plus élégante de le faire?
Je pense est plus élégant si vous créez une autre couche dans votre api où vous pouvez faire une demande à l'utilisateur par identifiant pour obtenir uniquement des valeurs partielles, sans avoir de sens que si vous obtenir toutes les valeurs seulement pour obtenir une valeur de la réponse DTO. –