Progettazione dell'API REST: più chiamate o singola chiamata all'API

7

Stiamo sviluppando un'API di rest per il sito web eCommerce che verrà utilizzata dalle app mobili.

Nella home page di un'app dobbiamo chiamare più risorse come Slider, Migliori marchi, Prodotti più venduti, Prodotti di tendenza ecc.

Due opzioni per effettuare chiamate API:

Chiamata singola:

www.example.com/api/GetAllInHome

Chiamate multiple:

www.example.com/api/GetSliders

www.example.com/api/GetTopBrands

www.example.com/api/GetBestSellingProducts

www.example.com/api/GetTrendingProducts

Qual è l'approccio migliore per il design delle API di riposo: chiamate singole o multiple, spiega i pro ei contro?

Quale richiederà più tempo per rispondere alla richiesta?

    
posta stom 09.02.2017 - 07:48
fonte

2 risposte

7

Nella Theory le chiamate simultanee multiple sono più flessibili e altrettanto veloci.

Tuttavia, in pratica, se carichi una pagina e poi carichi ogni parte di quella pagina, visualizzando gli spinners di caricamento su di essa finché non ottieni i risultati, il risultato è lento e disgiunto.

Per questo motivo le richieste di dati AJAX devono essere utilizzate con moderazione e solo quando una sezione della pagina è lenta da caricare o deve essere aggiornata su un ciclo diverso dal resto della pagina. Pronuncia un display principale / dettagli, in cui desideri selezionare un'opzione dal master e visualizza i dettagli corrispondenti senza ricaricare il master.

Un design comune è quello di mantenere le API separate per la flessibilità di codifica e le preoccupazioni dei micro-servizi, ma unire il lato server dei dati nel sito web. in modo che il client debba effettuare una sola chiamata al proprio sito web. Le chiamate API con il caching appropriato dovrebbero essere veloci all'interno del data center.

Inoltre, considera di non avere nessuna chiamata API client. semplicemente generare il lato del server HTML. Sebbene i framework per app a pagina singola di javascript ti spingano verso il basso lungo la rotta API. Di solito non è l'approccio ottimale per i siti di e-commerce ad alto volume.

    
risposta data 09.02.2017 - 10:36
fonte
2

TL; DR: a parte tutte le altre considerazioni sull'applicazione, l'esecuzione di una singola chiamata sarebbe più veloce di eseguire più chiamate. L'esecuzione asincrona delle chiamate può ridurre il tempo complessivo necessario per completare una determinata operazione dal punto di vista dell'utente (che potrebbe essere tutto ciò che serve), ma in generale, il tempo impiegato sarebbe ancora più lungo per le chiamate multiple.

Nel tuo caso, tuttavia, non sono sicuro che questa sia la storia completa.

Le API REST sono un termine un po 'ambiguo, a causa di varie interpretazioni del documento che hanno reso popolare l'idea. Tuttavia, anche con l'interpretazione più liberale di ciò che costituisce un'API REST, ciò che hai non si adatta veramente.

Il principio fondamentale è che hai una risorsa su cui vuoi eseguire un'azione. L'URI identifica la risorsa a cui sei interessato e normalmente useresti i verbi HTTP per indicare cosa vuoi fare a quella risorsa.

Nel tuo caso specifico, tutti i tuoi metodi hanno la parola 'get' nel loro nome. Dovresti cambiare il verbo usato nella richiesta HTTP per indicare che vuoi "ottenere" la risorsa disponibile in quella posizione.

Lo schema URI dovrebbe rappresentare la gerarchia logica delle risorse che desideri rendere disponibili agli utenti della tua API, quindi nel tuo caso prenderei in considerazione l'utilizzo di qualcosa come /api/products?category=sliders per filtrare la tua collezione di prodotti. Ciò significa che quando i clienti vogliono ottenere tutti i tuoi prodotti, possono semplicemente omettere la stringa di query.

    
risposta data 09.02.2017 - 09:01
fonte

Leggi altre domande sui tag