Supponiamo di avere due entità author
e post
, dove ogni post ha un autore .
Sono implementate queste chiamate REST
-
Ottieni un elenco impaginato di post :
GET /posts?page={page}
-
Ottieni un elenco di autori:
GET /authors
-
Ottieni un singolo autore:
GET /authors/{id}
Supponiamo che abbia anche un client che utilizza il servizio REST. Questo cliente desidera mostrare un elenco impaginato di post con autori correlati.
Ora, come funzionerebbe il servizio REST per quanto riguarda le entità correlate? Esistono i seguenti metodi:
-
Lascia che la chiamata di
GET /posts?page=1
restituisca i post e gli autori correlati in un'unica chiamata. Facoltativamente, rendi questo parametro separato, ad es.GET /posts?page=1&related=true
oGET /posts/related?page=1
. -
Consenti al client di scorrere i post e ottenere l'autore per ogni post utilizzando la chiamata
GET /author/{id}
. -
Lascia che la chiamata REST per gli autori accetti un elenco di ID come filtro, in modo che il client possa ottenere gli autori correlati in una chiamata, ad es.
GET /authors?ids=10,12,16,30,43,44,58
.
Il metodo 1 è il più semplice dal punto di vista del cliente poiché ottiene tutti i dati necessari in un'unica chiamata. Ma il servizio REST è limitato qui, non dovrebbe essere necessario installare alcun client particolare perché ogni client ha altri requisiti.
Il metodo 2 è l'approccio REST più pulito, ma diciamo che una pagina ha 30 post, il client deve effettuare 30 chiamate REST aggiuntive per recuperare gli autori correlati. Questo è molto inefficiente.
Il metodo 3 è forse migliore dei tre, poiché è un'implementazione REST relativamente pulita (rispetto al metodo 1) e richiede solo una chiamata in più per pagina.
C'è un approccio consigliato qui?