Disponiamo di siti Web di e-commerce per telefoni cellulari. Stiamo costruendo API riposante sui telefoni POST, PUT, DELETE, UPDATE.
Ogni cellulare avrà caratteristiche di base come: prezzo, produttore, anno di produzione, colore, sconto.
Oltre a questo, anche la maggior parte dei cellulari avrà immagini.
Inoltre, alcuni di questi hanno garanzia del produttore. Diciamo il 50% di loro.
E pochi dei cellulari avranno a disposizione opzioni finanziarie, come ad esempio il legame con alcune banche per facilitare il prestito per queste. Quasi l'80% avrà questa funzione.
Stavamo decidendo due approcci per progettare api per questo:
Approccio 1. Tutti questi nello stesso oggetto JSON. Solo una API come:
{
"basicInfo": {
"price": "",
"mfgYear": "",
"manufacturer": ""
...
},
"images":{...},
"warranty":{...},
"finance":{...}
}
Approccio 2. Tutti questi oggetti JSON sono separati. Ad esempio:
Primo Api per "basicInfo".
Seconda Api per "immagini".
Terza API per "garanzia".
Quarta Api per "finanza"
Potrei capire alcuni pro e contro di ciascuno:
APPROACH1: Pro: Riceviamo tutte le informazioni del magazzino insieme sul server. Ciò significa meno hit API, meno carico sul server. Inoltre, in futuro, se implementeremo qualche elaborazione di coda per salvare queste informazioni di magazzino in un database, non ci saranno mai casi di immagine / garanzia / finanza prima che lo stock venga inserito nel database poiché abbiamo tutte le informazioni insieme qui. Quindi, prima inseriremo il magazzino nel database e quindi inseriremo il record in altre tabelle che avranno una relazione di chiave esterna. Contro: questa API / risorsa ha più responsabilità. Diventerebbe sempre più grande e potrebbero esserci troppi campi in questa API in futuro. Mi sembra anche una violazione del principio di responsabilità unica.
APPROACH2: Pro: Sembra un po 'più pulito e organizzato. Sembra che ogni API abbia la propria responsabilità definita. Sembra scalabile per me. Se viene apportata una modifica in un'API, è meno probabile che influenzi le altre API. Contro: numero maggiore di hit API sul server. Sono pubblicate maggiori probabilità di risorse dipendenti di azioni che vengono registrate prima dello stock. Ad esempio, possiamo rimuovere le immagini prima che le immagini siano inserite.
Approach3. Fornire entrambe le opzioni. Esempio che consente di inviare altre informazioni con informazioni di base e creare API separate per queste risorse.
Qual è l'approccio migliore, ossia più riposante, scalabile e con prestazioni migliori?