Per rendere la soluzione riutilizzabile e flessibile, suggerirei di implementare un parametro di query "filtro". Lì, si può mettere tutti i campi richiesti dal cliente:
GET /customers/123?fields=id,first_name,last_name,email
In questo modo se in seguito è necessario creare una sintesi diversa per un compito diverso, non avrete nulla da modificare.
Non consiglierei /customers/123/summary
perché non è flessibile. Potrebbe essere ok per un caso, ma se il cliente ha bisogno di accedere a diverse proprietà per un caso diverso, sarà necessario modificare la risorsa (molto probabilmente restituendo più campi del necessario). Se si vuole "nascondere" i nomi dei campi, forse in alternativa potrebbe essere qualcosa di simile:
GET /customers/123?view=DESCRIPTION
Dove "DESCRIPTION
" sarebbe descrivere il tipo di sintesi. Ad esempio:
GET /customers/123?view=addresses_only // eg. returns billing and home address
GET /customers/123?view=short // eg. returns only id, first name, last name
Questo è ancora flessibile poiché è possibile creare facilmente nuove viste.
fonte
2013-04-12 17:45:01
Grazie per il suggerimento e posso vedere come è flessibile. Una preoccupazione che ho con questo approccio è che presuppone che il consumatore conosca i campi disponibili per la risorsa del cliente. – BobJ
In entrambi i casi, che sia/summary o /? Field = ..., sarà comunque necessario condividere un URL con il client. Non hanno bisogno di conoscere i campi disponibili se semplicemente gli dai l'URL. Ho aggiornato il mio post con un'altra possibile soluzione. –
grazie mi piace il? View = short approach – BobJ