Ho questo URL:
/api/pallets/list
Che restituisce un array JSON simile a questo:
[{
palletId: 333,
code: 'J050000081',
grower: {
growerId: 35,
name: 'Grower Of Blueberries Inc'
},
species: {
speciesId: 1,
name: 'Blueberries'
},
caliber: {
caliberId: 5,
name: '10-12'
},
}, ...]
I nomi sono spesso di grandi dimensioni e se l'elenco contiene 5000 pallet con molti nomi di byte.
Quando l'app client chiama api/pallets/list
ha già scaricato l'elenco di coltivatori, specie e calibri, chiamando api/growers/list
, api/species/list
e api/calibers/list
Per questo motivo, mi chiedo se sia una buona idea che il server restituisca solo gli id delle cose, cioè:
[{
palletId: 333,
code: 'J050000081',
grower: {
growerId: 35,
},
species: {
speciesId: 1,
},
caliber: {
caliberId: 5,
},
}, ...]
E poi l'app client avrà la responsabilità di completare il JSON, facendo qualcosa del genere:
// Pseudocode
// Just after fetching from api/pallets/list
foreach pallet in clientApp.pallets {
pallet.grower = clientApp.growers[pallet.growerId]
pallet.species = clientApp.species[pallet.speciesId]
pallet.caliber = clientApp.calibers[pallet.caliberId]
}
// growers is a dictionary with all the growers already downloaded from the server
// species is a dictionary with all the species already downloaded from the server
// calibers idem
Voglio sapere se questa è una buona o una cattiva idea per migliorare le prestazioni. Esiste un nome per questa pratica?
Il codice sarebbe molto più pulito senza una modifica come questa ma questo 5000 pallets jarray è troppo pesante. Nell'esempio sto solo mettendo 3 campi (coltivatore, specie, calibro) ma in realtà ce ne sono tipo 10. Tutti hanno id + nome + altri sottocampi ...