Questo documento illustra alcune tecniche che puoi utilizzare per migliorare le prestazioni della tua applicazione. In alcuni casi, vengono utilizzati esempi di altre API o API generiche per illustrare le idee presentate. Tuttavia, gli stessi concetti sono applicabili all'API Google Drive.
Compressione mediante gzip
Un modo semplice e conveniente per ridurre la larghezza di banda necessaria per ogni richiesta è abilitare la compressione gzip. Sebbene ciò richieda più tempo di CPU per decomprimere i risultati, il compromesso con i costi di rete di solito lo rende molto utile.
Per ricevere una risposta con codifica gzip devi eseguire due operazioni: impostare un'intestazione Accept-Encoding
e modificare lo user agent in modo che contenga la stringa gzip
. Ecco un esempio di intestazioni HTTP formattate correttamente per abilitare la compressione gzip:
Accept-Encoding: gzip User-Agent: my program (gzip)
Utilizzo di risorse parziali
Un altro modo per migliorare le prestazioni delle chiamate API è inviare e ricevere solo la parte dei dati di tuo interesse. Ciò consente all'applicazione di evitare il trasferimento, l'analisi e l'archiviazione dei campi non necessari, in modo da poter utilizzare risorse come rete, CPU e memoria in modo più efficiente.
Esistono due tipi di richieste parziali:
- Risposta parziale: una richiesta in cui specifichi quali campi includere nella risposta (utilizza il parametro di richiesta
fields
). - Patch: una richiesta di aggiornamento in cui invii solo i campi che vuoi modificare (utilizza il verbo HTTP
PATCH
).
Nelle sezioni seguenti sono disponibili ulteriori dettagli su come effettuare richieste parziali.
Risposta parziale
Per impostazione predefinita, il server restituisce la rappresentazione completa di una risorsa dopo l'elaborazione delle richieste. Per ottenere prestazioni migliori, puoi chiedere al server di inviare solo i campi di cui hai davvero bisogno e ottenere invece una risposta parziale.
Per richiedere una risposta parziale, utilizza il parametro di richiesta fields
per specificare i campi che devono essere restituiti. Puoi utilizzare questo parametro con qualsiasi richiesta che restituisce dati di risposta.
Tieni presente che il parametro fields
influisce solo sui dati della risposta. non influisce sugli eventuali dati che devi inviare. Per ridurre la quantità di dati inviati quando modifichi le risorse, utilizza una richiesta patch.
Esempio
L'esempio seguente mostra l'utilizzo del parametro fields
con una "Demo" generica (fittizia) tramite Google Cloud CLI
o tramite l'API Compute Engine.
Richiesta semplice: questa richiesta GET
HTTP omette il parametro fields
e restituisce la risorsa completa.
https://www.googleapis.com/demo/v1
Risposta completa delle risorse: i dati completi della risorsa includono i seguenti campi, insieme a molti altri che sono stati omessi per brevità.
{ "kind": "demo", ... "items": [ { "title": "First title", "comment": "First comment.", "characteristics": { "length": "short", "accuracy": "high", "followers": ["Jo", "Will"], }, "status": "active", ... }, { "title": "Second title", "comment": "Second comment.", "characteristics": { "length": "long", "accuracy": "medium" "followers": [ ], }, "status": "pending", ... }, ... ] }
Richiesta di una risposta parziale: la seguente richiesta per questa stessa risorsa utilizza il parametro fields
per ridurre in modo significativo la quantità di dati restituiti.
https://www.googleapis.com/demo/v1?fields=kind,items(title,characteristics/length)
Risposta parziale: in risposta alla richiesta precedente, il server restituisce una risposta contenente solo le informazioni sul tipo insieme a un array di elementi essenziale che include solo il titolo HTML e le informazioni sulle caratteristiche della lunghezza in ogni elemento.
200 OK
{ "kind": "demo", "items": [{ "title": "First title", "characteristics": { "length": "short" } }, { "title": "Second title", "characteristics": { "length": "long" } }, ... ] }
Tieni presente che la risposta è un oggetto JSON che include solo i campi selezionati e i relativi oggetti principali.
Di seguito vengono trattati i dettagli sulla formattazione del parametro fields
, seguiti da ulteriori dettagli su cosa esattamente viene restituito nella risposta.
Riepilogo sintassi dei parametri dei campi
Il formato del valore del parametro di richiesta fields
è basato sulla sintassi XPath. La sintassi supportata è riepilogata di seguito e ulteriori esempi sono forniti nella sezione seguente.
- Utilizza un elenco separato da virgole per selezionare più campi.
- Utilizza
a/b
per selezionare un campob
nidificato all'interno del campoa
. utilizzaa/b/c
per selezionare un campoc
nidificato all'interno dib
.
Eccezione: per le risposte dell'API che utilizzano "dati" I wrapper, in cui la risposta è nidificata all'interno di un oggetto
data
simile adata: { ... }
, non includono "data
" nella specificafields
. Se includi l'oggetto dati con una specifica dei campi comedata/a/b
, si verifica un errore. Utilizza invece una specificafields
comea/b
. - Utilizza un sottoselettore per richiedere un insieme di sottocampi specifici di array o oggetti inserendo le espressioni tra parentesi "
( )
".Ad esempio:
fields=items(id,author/email)
restituisce solo l'ID elemento e l'email dell'autore per ogni elemento nell'array di articoli. Puoi anche specificare un singolo campo secondario, dovefields=items(id)
equivale afields=items/id
. - Se necessario, utilizza i caratteri jolly nelle selezioni dei campi.
Ad esempio:
fields=items/pagemap/*
seleziona tutti gli oggetti in una mappa di pagina.
Altri esempi di utilizzo del parametro campi
Gli esempi riportati di seguito includono descrizioni di come il valore parametro fields
influisce sulla risposta.
Nota: come per tutti i valori dei parametri di query, il valore parametro fields
deve essere codificato nell'URL. Per una migliore leggibilità, gli esempi in questo documento omettono la codifica.
- Identifica i campi che vuoi restituire o effettua selezioni dei campi.
- Il valore parametro di richiesta
fields
è un elenco di campi separati da virgole. Ogni campo è specificato in relazione alla radice della risposta. Pertanto, se esegui un'operazione list, la risposta è una raccolta e in genere include un array di risorse. Se stai eseguendo un'operazione che restituisce una singola risorsa, i campi sono specificati in relazione a quella risorsa. Se il campo selezionato è (o fa parte) di un array, il server restituisce la parte selezionata di tutti gli elementi dell'array.
Ecco alcuni esempi a livello di raccolta:
Esempi Effetto items
Restituisce tutti gli elementi nell'array di elementi, inclusi tutti i campi di ogni elemento, ma nessun altro campo. etag,items
Restituisce sia il campo etag
sia tutti gli elementi dell'array di elementi.items/title
Restituisce solo il campo title
per tutti gli elementi nell'array di articoli.
Ogni volta che viene restituito un campo nidificato, la risposta include gli oggetti principali che contengono. I campi principali non includono altri campi secondari, a meno che non vengano selezionati esplicitamente.context/facets/label
Restituisce solo il campo label
per tutti i membri dell'arrayfacets
, a sua volta nidificato sotto l'oggettocontext
.items/pagemap/*/title
Per ogni elemento dell'array di articoli, restituisce solo il campo title
(se presente) di tutti gli oggetti secondari dipagemap
.
Ecco alcuni esempi a livello di risorsa:
Esempi Effetto title
Restituisce il campo title
della risorsa richiesta.author/uri
Restituisce il sottocampo uri
dell'oggettoauthor
nella risorsa richiesta.links/*/href
Restituisce il campo href
di tutti gli oggetti secondari dilinks
. - Richiedi solo parti di campi specifici utilizzando le selezioni secondarie.
- Per impostazione predefinita, se la tua richiesta specifica campi specifici, il server restituisce gli oggetti o gli elementi array nella loro interezza. Puoi specificare una risposta che includa solo alcuni sottocampi. Per farlo utilizzi "
( )
" sintassi di sottoselezione, come nell'esempio riportato di seguito.Esempio Effetto items(title,author/uri)
Restituisce solo i valori di title
e diuri
dell'autore per ogni elemento nell'array di elementi.
Gestione delle risposte parziali
Dopo che un server elabora una richiesta valida che include il parametro di query fields
, restituisce un codice di stato HTTP 200 OK
insieme ai dati richiesti. Se il parametro di query fields
presenta un errore o non è valido, il server restituisce un codice di stato HTTP 400 Bad Request
, insieme a un messaggio di errore che indica all'utente qual era il problema nella selezione dei campi (ad esempio, "Invalid field selection a/b"
).
Ecco l'esempio di risposta parziale mostrato nella sezione introduttiva riportata sopra. La richiesta utilizza il parametro fields
per specificare quali campi restituire.
https://www.googleapis.com/demo/v1?fields=kind,items(title,characteristics/length)
La risposta parziale è simile alla seguente:
200 OK
{ "kind": "demo", "items": [{ "title": "First title", "characteristics": { "length": "short" } }, { "title": "Second title", "characteristics": { "length": "long" } }, ... ] }
Nota:per le API che supportano parametri di ricerca per l'impaginazione dei dati (ad esempio maxResults
e nextPageToken
), utilizza questi parametri per ridurre i risultati di ogni query a una dimensione gestibile. In caso contrario, i miglioramenti delle prestazioni possibili con una risposta parziale potrebbero non essere ottenuti.
Patch (aggiornamento parziale)
Puoi anche evitare di inviare dati non necessari quando modifichi le risorse. Per inviare i dati aggiornati solo per i campi specifici che stai modificando, utilizza il verbo HTTP PATCH
. La semantica della patch descritta in questo documento è diversa (e più semplice) rispetto alla precedente implementazione GData dell'aggiornamento parziale.
Il breve esempio riportato di seguito mostra come l'uso della patch riduce al minimo i dati che devi inviare per fare un piccolo aggiornamento.
Esempio
Questo esempio mostra una semplice richiesta di patch per aggiornare solo il titolo di una "Demo" generica (fittizia) risorsa API. La risorsa include anche un commento, un insieme di caratteristiche, uno stato e molti altri campi, ma questa richiesta invia solo il campo title
, che è l'unico campo che viene modificato:
PATCH https://www.googleapis.com/demo/v1/324 Authorization: Bearer your_auth_token Content-Type: application/json { "title": "New title" }
Risposta:
200 OK
{ "title": "New title", "comment": "First comment.", "characteristics": { "length": "short", "accuracy": "high", "followers": ["Jo", "Will"], }, "status": "active", ... }
Il server restituisce un codice di stato 200 OK
insieme alla rappresentazione completa della risorsa aggiornata. Poiché nella richiesta di applicazione patch era incluso solo il campo title
, si tratta dell'unico valore diverso da prima.
Nota:se utilizzi il parametro risposta parziale fields
in combinazione con la patch, puoi aumentare ulteriormente l'efficienza delle richieste di aggiornamento. Una richiesta di applicazione patch riduce solo le dimensioni della richiesta. Una risposta parziale riduce la dimensione della risposta. Quindi, per ridurre la quantità di dati inviati in entrambe le direzioni, utilizza una richiesta di applicazione patch con il parametro fields
.
Semantica di una richiesta di patch
Il corpo della richiesta di patch include solo i campi delle risorse che vuoi modificare. Quando specifichi un campo, devi includere tutti gli oggetti principali che lo contengono, così come i relativi elementi principali vengono restituiti con una risposta parziale. I dati modificati inviati vengono uniti ai dati relativi all'oggetto principale, se presente.
- Aggiungi: per aggiungere un campo che non esiste già, specifica il nuovo campo e il relativo valore.
- Modifica: per modificare il valore di un campo esistente, specifica il campo e impostalo sul nuovo valore.
- Elimina: per eliminare un campo, specifica il campo e impostalo su
null
. Ad esempio:"comment": null
. Puoi anche eliminare un intero oggetto (se è modificabile) impostandolo sunull
. Se utilizzi libreria client dell'API Java; utilizza inveceData.NULL_STRING
; della vedi JSON null.
Nota sugli array: le richieste di patch che contengono array sostituiscono l'array esistente con quello fornito. Non puoi modificare, aggiungere o eliminare elementi in un array in modo frammentario.
Utilizzo di una patch in un ciclo di lettura, modifica e scrittura
Può essere utile iniziare recuperando una risposta parziale con i dati che vuoi modificare. Questo è particolarmente importante per le risorse che utilizzano gli ETag, poiché per aggiornare correttamente la risorsa devi fornire il valore ETag corrente nell'intestazione HTTP If-Match
. Dopo aver ottenuto i dati, puoi modificare i valori e inviare la rappresentazione parziale modificata con una richiesta di patch. Ecco un esempio in cui la risorsa Demo utilizza gli ETag:
GET https://www.googleapis.com/demo/v1/324?fields=etag,title,comment,characteristics Authorization: Bearer your_auth_token
Questa è la risposta parziale:
200 OK
{ "etag": "ETagString" "title": "New title" "comment": "First comment.", "characteristics": { "length": "short", "level": "5", "followers": ["Jo", "Will"], } }
La seguente richiesta di patch si basa su questa risposta. Come mostrato di seguito, utilizza anche il parametro fields
per limitare i dati restituiti nella risposta della patch:
PATCH https://www.googleapis.com/demo/v1/324?fields=etag,title,comment,characteristics Authorization: Bearer your_auth_token Content-Type: application/json If-Match: "ETagString"
{ "etag": "ETagString" "title": "", /* Clear the value of the title by setting it to the empty string. */ "comment": null, /* Delete the comment by replacing its value with null. */ "characteristics": { "length": "short", "level": "10", /* Modify the level value. */ "followers": ["Jo", "Liz"], /* Replace the followers array to delete Will and add Liz. */ "accuracy": "high" /* Add a new characteristic. */ }, }
Il server risponde con un codice di stato HTTP 200 OK e con la rappresentazione parziale della risorsa aggiornata:
200 OK
{ "etag": "newETagString" "title": "", /* Title is cleared; deleted comment field is missing. */ "characteristics": { "length": "short", "level": "10", /* Value is updated.*/ "followers": ["Jo" "Liz"], /* New follower Liz is present; deleted Will is missing. */ "accuracy": "high" /* New characteristic is present. */ } }
Costruire direttamente una richiesta di patch
Per alcune richieste di patch, devi basarle sui dati recuperati in precedenza. Ad esempio, se vuoi aggiungere un elemento a un array e non vuoi perdere nessuno degli elementi dell'array esistenti, devi prima recuperare i dati esistenti. Allo stesso modo, se un'API utilizza gli ETag, devi inviare il valore ETag precedente con la tua richiesta per aggiornare correttamente la risorsa.
Nota: puoi utilizzare un'intestazione HTTP "If-Match: *"
per forzare l'elaborazione di una patch quando sono in uso gli ETag. In questo caso, non sarà necessario leggere prima di scrivere.
In altre situazioni, tuttavia, puoi creare la richiesta di patch direttamente, senza prima recuperare i dati esistenti. Ad esempio, puoi facilmente configurare una richiesta di applicazione patch che aggiorni un campo con un nuovo valore o ne aggiunga uno nuovo. Ecco un esempio:
PATCH https://www.googleapis.com/demo/v1/324?fields=comment,characteristics Authorization: Bearer your_auth_token Content-Type: application/json { "comment": "A new comment", "characteristics": { "volume": "loud", "accuracy": null } }
Con questa richiesta, se il campo di commento ha un valore esistente, il nuovo valore lo sovrascrive; altrimenti viene impostato sul nuovo valore. Analogamente, se fosse presente una caratteristica del volume, il suo valore viene sovrascritto; In caso contrario, viene creato. Il campo relativo alla precisione, se impostato, viene rimosso.
Gestione della risposta a una patch
Dopo aver elaborato una richiesta di patch valida, l'API restituisce un codice di risposta HTTP 200 OK
insieme alla rappresentazione completa della risorsa modificata. Se gli ETag vengono utilizzati dall'API, il server aggiorna i valori ETag quando elabora correttamente una richiesta di patch, così come avviene con PUT
.
La richiesta di patch restituisce l'intera rappresentazione della risorsa, a meno che non utilizzi il parametro fields
per ridurre la quantità di dati che restituisce.
Se una richiesta di patch genera un nuovo stato della risorsa che non è sintatticamente o semanticamente valido, il server restituisce un codice di stato HTTP 400 Bad Request
o 422 Unprocessable Entity
e lo stato della risorsa rimane invariato. Ad esempio, se tenti di eliminare il valore di un campo obbligatorio, il server restituisce un errore.
Notazione alternativa quando il verbo HTTP PATCH non è supportato
Se il firewall non consente le richieste HTTP PATCH
, invia una richiesta HTTP POST
e imposta l'intestazione di override su PATCH
, come mostrato di seguito:
POST https://www.googleapis.com/... X-HTTP-Method-Override: PATCH ...
Differenza tra patch e aggiornamento
In pratica, quando invii i dati per una richiesta di aggiornamento che utilizza il verbo PUT
HTTP, devi inviare solo i campi obbligatori o facoltativi. se invii valori per campi impostati dal server, questi vengono ignorati. Sebbene possa sembrare un altro modo per eseguire un aggiornamento parziale, questo approccio presenta alcune limitazioni. Con gli aggiornamenti che utilizzano il verbo PUT
HTTP, la richiesta non riesce se non fornisci parametri obbligatori e cancella i dati impostati in precedenza se non fornisci parametri facoltativi.
È molto più sicuro usare la patch per questo motivo. Devi fornire i dati solo per i campi da modificare. i campi omessi non vengono cancellati. L'unica eccezione a questa regola si verifica con gli elementi o gli array ripetuti: se li ometti tutti, rimangono invariati. se ne fornisci uno, l'intero set viene sostituito con quello da te fornito.
Richieste batch
Questo documento mostra come raggruppare le chiamate API in batch per ridurre il numero di connessioni HTTP che il cliente deve effettuare.
Questo documento riguarda nello specifico la creazione di una richiesta batch mediante l'invio di un richiesta HTTP. Se, invece, utilizzi una libreria client di Google per effettuare una richiesta batch, consulta la documentazione della libreria client.
Panoramica
Ogni connessione HTTP effettuata dal client determina un certo overhead. L'API Google Drive supporta la creazione in batch, per consentire al client di inserire diverse chiamate API in un'unica richiesta HTTP.
Esempi di situazioni in cui è possibile utilizzare la gestione in batch:
- Recupero dei metadati per un numero elevato di file.
- Aggiornamento collettivo di metadati o proprietà.
- Modifica delle autorizzazioni per un numero elevato di file, ad esempio l'aggiunta di un nuovo utente o gruppo.
- Sincronizzazione dei dati del client locale per la prima volta o dopo un periodo di tempo prolungato offline.
In ogni caso, invece di inviare ogni chiamata separatamente, puoi raggrupparle in un'unica richiesta HTTP. Tutte le richieste interne devono andare alla stessa API di Google.
Hai un limite di 100 chiamate in una singola richiesta batch. Se devi effettuare un numero maggiore di chiamate, utilizza più richieste batch.
Nota: il sistema batch per l'API Google Drive utilizza la stessa sintassi del sistema di elaborazione batch OData, ma la semantica è diversa.
I vincoli aggiuntivi includono:
- Le richieste batch con più di 100 chiamate potrebbero causare un errore.
- Esiste un limite di 8000 caratteri per la lunghezza dell'URL per ogni richiesta interna.
- Google Drive non supporta le operazioni collettive per i file multimediali, né per il caricamento o il download, né per l'esportazione di file.
Dettagli batch
Una richiesta batch è composta da più chiamate API combinate in un'unica richiesta HTTP, che può essere inviata all'indirizzo batchPath
specificato nel documento di rilevamento API. Il percorso predefinito è /batch/api_name/api_version
. Questa sezione descrive in dettaglio la sintassi batch; in seguito puoi trovare un esempio.
Nota: un insieme di n richieste raggruppate insieme viene conteggiata ai fini del limite di utilizzo come richieste di n, non come una singola richiesta. La richiesta batch viene separata in un insieme di richieste prima dell'elaborazione.
Formato di una richiesta batch
Una richiesta batch è una singola richiesta HTTP standard contenente più chiamate API di Google Drive, che utilizza il tipo di contenuto multipart/mixed
. All'interno di questa richiesta HTTP principale, ciascuna parte contiene una richiesta HTTP nidificata.
Ogni parte inizia con la propria intestazione HTTP Content-Type: application/http
. Può anche avere un'intestazione Content-ID
facoltativa. Tuttavia, le intestazioni delle parti servono solo a contrassegnare l'inizio della parte; e sono separate dalla richiesta nidificata. Dopo che il server ha decriptato la richiesta batch in richieste separate, le intestazioni delle parti vengono ignorate.
Il corpo di ogni parte è una richiesta HTTP completa, con il proprio verbo, URL, intestazioni e corpo. La richiesta HTTP deve contenere solo la parte del percorso dell'URL. Non sono consentiti URL completi nelle richieste batch.
Le intestazioni HTTP per la richiesta batch esterna, fatta eccezione per le intestazioni Content-
come Content-Type
, si applicano a tutte le richieste nel batch. Se specifichi una determinata intestazione HTTP sia nella richiesta esterna sia in una singola chiamata, il valore dell'intestazione di chiamata singola sostituisce il valore dell'intestazione della richiesta batch esterna. Le intestazioni di una singola chiamata si applicano solo a quella chiamata.
Ad esempio, se fornisci un'intestazione Autorizzazione per una chiamata specifica, questa intestazione si applica solo a quella chiamata. Se fornisci un'intestazione di autorizzazione per la richiesta esterna, questa intestazione si applica a tutte le singole chiamate, a meno che non la sostituiscano con intestazioni di autorizzazione proprie.
Quando il server riceve la richiesta in batch, applica i parametri di ricerca e le intestazioni (a seconda dei casi) della richiesta esterna a ogni parte, quindi tratta ogni parte come se fosse una richiesta HTTP separata.
Risposta a una richiesta batch
La risposta del server è una singola risposta HTTP standard con un tipo di contenuti multipart/mixed
; ciascuna parte è la risposta a una delle richieste nella richiesta in batch, nello stesso ordine delle richieste.
Come le parti della richiesta, ogni parte della risposta contiene una risposta HTTP completa, inclusi un codice di stato, intestazioni e corpo. E come le parti nella richiesta, ogni parte della risposta è preceduta da un'intestazione Content-Type
che segna l'inizio della parte.
Se una determinata parte della richiesta aveva un'intestazione Content-ID
, la parte corrispondente della risposta ha un'intestazione Content-ID
corrispondente, con il valore originale preceduto dalla stringa response-
, come mostrato nell'esempio seguente.
Nota: il server potrebbe eseguire le chiamate in qualsiasi ordine. Non fare affidamento sulla loro esecuzione nell'ordine in cui li hai specificati. Se vuoi assicurarti che due chiamate avvengano in un determinato ordine, non puoi inviarle in un'unica richiesta; invia la prima risposta da sola, quindi attendi la risposta alla prima prima di inviare la seconda.
Esempio
L'esempio seguente mostra l'utilizzo della creazione in batch con l'API Google Drive.
Esempio di richiesta batch
POST https://www.googleapis.com/batch/drive/v3 Accept-Encoding: gzip User-Agent: Google-HTTP-Java-Client/1.20.0 (gzip) Content-Type: multipart/mixed; boundary=END_OF_PART Content-Length: 963--END_OF_PART Content-Length: 337 Content-Type: application/http content-id: 1 content-transfer-encoding: binary
POST https://www.googleapis.com/drive/v3/files/fileId/permissions?fields=id Authorization: Bearer authorization_token Content-Length: 70 Content-Type: application/json; charset=UTF-8
{ "emailAddress":"example@appsrocks.com", "role":"writer", "type":"user" } --END_OF_PART Content-Length: 353 Content-Type: application/http content-id: 2 content-transfer-encoding: binary
POST https://www.googleapis.com/drive/v3/files/fileId/permissions?fields=id&sendNotificationEmail=false Authorization: Bearer authorization_token Content-Length: 58 Content-Type: application/json; charset=UTF-8
{ "domain":"appsrocks.com", "role":"reader", "type":"domain" } --END_OF_PART--
Esempio di risposta batch
Questa è la risposta alla richiesta di esempio nella sezione precedente.
HTTP/1.1 200 OK Alt-Svc: quic=":443"; p="1"; ma=604800 Server: GSE Alternate-Protocol: 443:quic,p=1 X-Frame-Options: SAMEORIGIN Content-Encoding: gzip X-XSS-Protection: 1; mode=block Content-Type: multipart/mixed; boundary=batch_6VIxXCQbJoQ_AATxy_GgFUk Transfer-Encoding: chunked X-Content-Type-Options: nosniff Date: Fri, 13 Nov 2015 19:28:59 GMT Cache-Control: private, max-age=0 Vary: X-Origin Vary: Origin Expires: Fri, 13 Nov 2015 19:28:59 GMT--batch_6VIxXCQbJoQ_AATxy_GgFUk Content-Type: application/http Content-ID: response-1
HTTP/1.1 200 OK Content-Type: application/json; charset=UTF-8 Date: Fri, 13 Nov 2015 19:28:59 GMT Expires: Fri, 13 Nov 2015 19:28:59 GMT Cache-Control: private, max-age=0 Content-Length: 35
{ "id": "12218244892818058021i" }
--batch_6VIxXCQbJoQ_AATxy_GgFUk Content-Type: application/http Content-ID: response-2
HTTP/1.1 200 OK Content-Type: application/json; charset=UTF-8 Date: Fri, 13 Nov 2015 19:28:59 GMT Expires: Fri, 13 Nov 2015 19:28:59 GMT Cache-Control: private, max-age=0 Content-Length: 35
{ "id": "04109509152946699072k" }
--batch_6VIxXCQbJoQ_AATxy_GgFUk--
Restituisci campi specifici dalla richiesta
Per impostazione predefinita, il server restituisce un insieme predefinito di campi delle risorse specifici per
il metodo usato. Ad esempio,
Il metodo files.list
potrebbe restituire solo il valore
id
, name
e mimeType
. Questi campi potrebbero non essere gli esatti
necessaria. Per restituire altri campi, consulta
Restituisci campi specifici di un file.