Ich entwerfe eine API mit Spring Boot für einige soziale Netzwerk-Backend. Mein aktuelles Modell sieht so aus:Design von DTO aus Model für eine API
public class User {
private long id;
private String handle;
private String name;
private List<User> followers;
private List<User> following;
// Getters setters etc
Jetzt habe ich DTO erstellt, die der obigen Struktur sehr ähnlich ist. Mein Problem ist, dass ich manchmal genau das zurückgeben möchte, was oben ist (was gut ist), aber manchmal will ich das nicht.
Zum Beispiel, wenn jemand daran interessiert sind nur bei der Suche nach Anhängern des Benutzers ist, ich will nicht Nachfolger aufzunehmen und nach (ich bin einfach interessiert id
, handle
und name
so Rechen followers
und following
für alle diese Benutzer wäre eine unglaubliche Verschwendung von Ressourcen).
In meiner aktuellen Implementierung sind diese Felder mit null
Werte zurückgegeben, die ich glaube nicht, ist eine gute Idee. Sollte ich ein separates DTO ohne diese Listen nur mit id
, handle
und name
erstellen? Oder gibt es einen eleganteren Weg?
Ich denke, eleganter ist, wenn Sie eine weitere Ebene in Ihrem api erstellen, in dem Sie eine Anforderung der Benutzer durch id machen kann nur teilweise Werte zu erhalten, keinen Sinn haben, wenn Sie Alle Werte nur abrufen, um einen Wert aus der DTO-Antwort zu erhalten. –