Impaginazione API, come implementare il metodo di paging token di pagina?

2

Sto lavorando per implementare un'interfaccia API per il mio progetto.

Come so, ci sono diverse forme per rendere l'impaginazione attraverso i risultati, come la seguente:

https://example.com/api/purchaseorders?page=2&pagesize=25  

Tuttavia, vedo che molte API come google utilizzano un approccio diverso, in cui utilizzano un "pageToken" per consentire all'utente di spostarsi tra le pagine dei risultati, ad esempio:

https://example.com/api/purchaseorders?pagesize=25&pageToken=ClkKHgoRc291cmNlX2NyZWF0ZWRfYXQSCQjA67Si5sr

Quindi anziché page=2 hanno usato pageToken=[token] .

Non mi è chiara l'idea di pageToken e come implementarla!

Sarà utile se mi guidi a qualsiasi risorsa in modo da poter ottenere una maggiore conoscenza.

Grazie.

    
posta developer 20.06.2017 - 17:23
fonte

2 risposte

4

Nota: questa è una pura speculazione, ma prima ho dovuto implementare qualcosa di simile.

Considera un grande set di dati di serie temporali memorizzato in una grande tabella come HBase. I dati non hanno una frequenza costante, quindi non è possibile fare previsioni sulla densità dei dati. Si desidera ottenere la pagina 5000 con la dimensione della pagina 25. Poiché non è possibile fare previsioni sulla densità dei dati, non c'è davvero un modo per implementare ciò senza iniziare dall'inizio e la scansione di 5000 * 25 righe e quindi raccogliere il successivo 25. Questo è davvero inefficiente e non scala.

Un metodo migliore consiste nell'utilizzare l'indice della chiave primaria della tabella e alcune dimensioni della pagina. In questo modo posso cercare direttamente la prima riga della pagina e raccogliere 25 righe. La prossima pagina inizierà con la chiave della 26a riga. È particolarmente utile nei dati delle serie temporali perché in genere quando si esegue una query si seleziona un'ora di inizio e si avvia il paging da lì.

Credo che Google stia facendo qualcosa di simile. Probabilmente stanno eseguendo l'hashing della chiave in modo che non perdano i dettagli di implementazione e quindi non accoppiano la loro interfaccia alla struttura della loro tabella.

    
risposta data 20.06.2017 - 23:16
fonte
2

L'approccio token di pagina di cui si sta parlando qui è più comunemente noto come 'paginazione basata su cursore' e dipende dalla registrazione del record in cui è stata lasciata l'ultima richiesta. Può essere composto da una singola entità come un id o composto da più di un'entità come "id + nome" hashed insieme nel caso in cui i record siano stati richiesti in un ordine ordinato. Questo è usato principalmente quando i record sono mutabili tra due di tali richieste di impaginazione. Puoi ottenere informazioni molto più dettagliate a riguardo qui: link

    
risposta data 24.04.2018 - 14:33
fonte

Leggi altre domande sui tag