Ottimizziamo le chiamate alla Google Drive API

Di - 21 June 2013 - in
Post image for Ottimizziamo le chiamate alla Google Drive API

La Google Drive API ci permette in maniera semplice di accedere ai file presenti nel nostro account di Google Drive, ma per avere queste informazioni avviene un trasferimento di informazioni. Anche la richiesta più semplice può richiedere un trasferimento di qualche KB, ad esempio se chiediamo le informazioni di un particolare file (attraverso la chiamata a file.list) riceviamo 4KB circa di dati.

Non stiamo parlando di ricevere il file vero e proprio, ma solo i metadati a lui associati!

Google Drive ha una quantità di informazioni associate ad ogni file (es. quando un file è stato acceduto l’ultima volta, quando è stato creato, quando è stato modificato l’ultima volta e da chi, etc… la lista completa è presente nella documentazione ufficiale), ma spesso le nostre applicazioni non necessitano di tutte queste informazioni, almeno non sempre.

Field query parameters

Fortunatamente esiste la possibilità di specificare di quali informazioni necessitiamo in risposta alla nostra richiesta, specificando in un parametro della richiesta quali fields deve restituirci Google Drive.

Possiamo utilizzare l’API Explorer di files.list per provare dal vivo la funzionalità.

Ipotizziamo di avere un’applicazione dove diamo la possibilità di selezionare in quale cartella di Drive salvare dei file; le informazioni di cui abbiamo bisogno per permettere questa selezione sono:

  1. il Titolo, da mostrare all’utente;
  2. l’ID, per poter poi caricare i file nella cartella corretta.

Per ottenere la lista delle cartelle dobbiamo specificare nel parametro query la seguente stringa:

'root' in parents and mimeType = 'application/vnd.google-apps.folder'

Questo specifica che ci interessano solamente le cartelle al primo livello ovvero nella cartella con ID root del nostro Drive. Non abbiamo ancora specificato che vogliamo solo ID e titolo e nel mio caso ricevo 55 KB di dati.

Proviamo ora a specificare nel parametro fields la seguente stringa:

items(id,title)

Ora richiediamo solo i dati che vogliamo, ovvero ID e titolo/nome della cartella. Nel mio caso siamo passati a 2 KB di dati trasferiti. Abbiamo avuto solo il 96% circa di banda risparmiata.

Per la connessione del mio PC è poca cosa che vengano trasferiti 55KB o 2KB per fare la stessa cosa, ma immaginate un device collegato alla rete mobile quanto tempo impiega per informazioni che poi non utilizzerà, oppure immaginate un servizio che utilizza Drive come cloud disk e riceve milioni di richieste ogni ora…

Ogni byte non trasferito sono secondi preziosi in cui l’utente non attende.

Via | Google Apps Developer Blog

Leave a Reply

Articolo scritto da

Techy, sviluppatore .Net per professione, sviluppatore Android per passione.
All Around Android Lover e Google Enthusiast

Contatta l'autore

Previous post:

Next post: