Ho un servizio di riposo che è essenzialmente un proxy per una varietà di altri servizi. Quindi se chiamo
GET /users/{id}
Otterrà il proprio profilo utente, nonché la cronologia degli ordini e le informazioni di contatto, ecc. tutti provenienti da vari servizi e li aggregherà in un unico oggetto. Il mio problema è che ogni chiamata a un servizio diverso ha il potenziale di aggiungere tempo alla richiesta originale, quindi preferiremmo non ottenere TUTTI i dati TUTTO il tempo se un particolare cliente non si preoccupa di tutti i pezzi.
Una soluzione a cui sono arrivato è di fare qualcosa del genere:
GET /users/{id}?includeOrders=true&includeX=true&includeY=true...
Funziona e mi consente di fare solo ciò di cui ho bisogno, ma è ingombrante. Abbiamo aggiunto abbastanza fonti di dati differenti che ci sono troppi parametri per quello stile che possono essere utili. Potrei fare qualcosa di simile con un singolo intero e una maschera di bit o qualcosa del genere, ma questo rende solo più difficile da leggere e non sembra molto Riposo.
Potrei suddividerlo in più chiamate, quindi dovrebbero chiamare /users/{id}/orders
e /users/{id}/profile
separatamente, ma questo tipo di sconfigge lo scopo di un proxy aggregante, il cui scopo è quello di semplificare i lavori dei clienti.
Ci sono dei buoni schemi che possono aiutarmi a restituire un numero sufficiente di dati per ciascun cliente, senza rendere troppo difficile per loro filtrare e selezionare ciò che vogliono?