Ottimizzazione delle prestazioni

Questo documento illustra alcune tecniche che puoi utilizzare per migliorare il rendimento la tua applicazione. In alcuni casi, vengono usati esempi di altre API implementate per illustrare le idee presentate. Tuttavia, valgono gli stessi concetti alla Rete Display e l'API Video 360.

Utilizzo di risorse parziali

Un altro modo per migliorare le prestazioni delle chiamate API è quello di inviare la porzione di dati che ti interessa. Ciò consente alla tua applicazione evitare di trasferire, analizzare e archiviare i campi non necessari, pertanto può utilizzare a risorse come rete, CPU e memoria.

Risposta parziale

Per impostazione predefinita, il server restituisce la rappresentazione completa di una risorsa nell'elaborazione delle richieste. Per ottenere prestazioni migliori, puoi chiedere al server di inviare solo i campi di cui hai davvero bisogno e riceverai invece una risposta parziale.

Per richiedere una risposta parziale, utilizza il parametro di richiesta fields per specificare i campi che vuoi restituire. Puoi utilizzare questo parametro con qualsiasi richiesta che restituisce i dati di risposta.

Esempio

L'esempio seguente mostra l'utilizzo del parametro fields con il parametro Display e l'API Video 360.

Richiesta semplice: questa richiesta HTTP GET omette il parametro fields e restituisce la risorsa completa.

GET https://displayvideo.googleapis.com/v3/advertisers?partnerId=1

Risposta completa della risorsa: i dati completi della risorsa includono quanto segue. campi, insieme a molti altri che sono stati omessi per brevità.

200 OK

{
 "advertisers": [
  {
   "name": "advertisers/1",
   "advertiserId": "1",
   "partnerId": "1",
   "displayName": "Example Advertiser 1",
   "entityStatus": "ENTITY_STATUS_ACTIVE",
   "updateTime": "2019-01-01T00:00:00.000000Z",
   "generalConfig": {
    "domainUrl": "http://example.com",
    "timeZone": "America/New_York",
    "currencyCode": "USD",
    "address": {
    }
   },
   "adServerConfig": {
    "thirdPartyOnlyConfig": {
    }
   },
   "creativeConfig": {
   },
   "dataAccessConfig": {
    "sdfConfig": {
     "sdfConfig": {
      "version": "VERSION_3_1"
     }
    }
   },
   "integrationDetails": {
   }
  },
  {
   "name": "advertisers/2",
   "advertiserId": "2",
   "partnerId": "1",
   "displayName": "Example Advertiser 2",
   "entityStatus": "ENTITY_STATUS_ACTIVE",
   "updateTime": "2019-01-01T00:00:00.000000Z",
   "generalConfig": {
    "domainUrl": "http://example.com",
    "timeZone": "America/New_York",
    "currencyCode": "USD",
    "address": {
    }
   },
   "adServerConfig": {
    "thirdPartyOnlyConfig": {
    }
   },
   "creativeConfig": {
   },
   "dataAccessConfig": {
    "sdfConfig": {
     "sdfConfig": {
      "version": "VERSION_3_1"
     }
    }
   },
   "integrationDetails": {
   }
  },
  ...
 ],
 "nextPageToken": "..."
}

Richiesta di una risposta parziale: la seguente richiesta per la stessa risorsa utilizza il parametro fields per ridurre notevolmente la quantità di dati restituiti.

GET https://displayvideo.googleapis.com/v3/advertisers?partnerId=1&fields=advertisers(advertiserId,partnerId,displayName)

Risposta parziale: in risposta alla richiesta riportata sopra, il server restituisce una risposta di tipo risposta che contiene un array di inserzionisti essenziali che include solo ID inserzionista, nome visualizzato e proprietà ID partner di ciascun inserzionista, se presenti.

200 OK

{
 "advertisers": [
  {
   "advertiserId": "1",
   "partnerId": "1",
   "displayName": "Example Advertiser 1"
  },
  {
   "advertiserId": "2",
   "partnerId": "1",
   "displayName": "Example Advertiser 2"
  },
  ...
 ]
}

Tieni presente che la risposta è un oggetto JSON che include solo i campi selezionati. e gli oggetti principali che lo contengono.

Di seguito vengono trattati i dettagli sulla formattazione del parametro fields, seguiti da ulteriori dettagli su ciò che viene esattamente restituito nella risposta.

Riepilogo sintassi dei parametri dei campi

Il formato del valore del parametro di richiesta fields è basato liberamente su XPath a riga di comando. 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 campo b nidificato all'interno del campo a. usa a/b/c per selezionare un campo c nidificato all'interno di b.

  • Utilizzare un sottoselettore per richiedere un insieme di sottocampi specifici di array mettendo le espressioni tra parentesi "( )".

    Ad esempio: fields=advertisers(advertiserId,generalConfig/domainUrl) restituisce solo l'ID inserzionista e l'URL del dominio per ogni elemento in dell'array di inserzionisti. Puoi anche specificare un singolo campo secondario, in cui fields=advertisers(advertiserId) equivale a fields=advertisers/advertiserId.

Altri esempi di utilizzo del parametro campi

I seguenti esempi includono descrizioni di come il valore parametro fields influisce sulla risposta.

Identifica i campi che vuoi restituire o effettua selezioni dei campi.

Il valore del parametro di richiesta fields è un elenco di campi separati da virgole e ogni campo è specificato rispetto alla radice della risposta. Pertanto, se stanno eseguendo un'operazione list, la risposta è una raccolta e di solito include un array di risorse. Se stai eseguendo un'operazione che restituisce una singola risorsa, i campi vengono specificati risorsa. Se il campo selezionato è (o fa parte) di un array, il server restituisce la parte selezionata di tutti gli elementi nell'array.

Ecco alcuni esempi a livello di raccolta:

Esempio Effetto
advertisers Restituisce tutti gli elementi in Array advertisers, tra cui tutti i campi di ogni elemento, ma nessun altro campo.
advertisers,nextPageToken Restituisce sia nextPageToken e tutti gli elementi nel campo Array advertisers.
advertisers/advertiserId Restituisce solo advertiserId per tutti gli elementi Array advertisers.

Ogni volta che un campo nidificato restituito, la risposta include che contengono gli oggetti principali. I campi principali non includono qualsiasi altro campo secondario, a meno che anche questi vengono selezionati in modo esplicito.
advertisers/generalConfig/domainUrl Restituisce il campo domainUrl per l'oggetto generalConfig, che a sua volta è nidificata sotto Array advertisers.

Ecco alcuni esempi a livello di risorsa:

Esempio Effetto
advertiserId Restituisce il campo advertiserId della risorsa richiesta.
generalConfig/domainUrl Restituisce il campo domainUrl per l'oggetto generalConfig nella risorsa richiesta.
Richiedi solo parti di campi specifici utilizzando le selezioni secondarie.

Per impostazione predefinita, se la richiesta specifica campi specifici, il server restituisce gli oggetti o gli elementi di array nella loro interezza. Puoi specificare una risposta che include solo alcuni sottocampi. Per farlo utilizzi "( )" sintassi di sottoselezione, come nell'esempio riportato di seguito.

Esempio Effetto
advertisers(advertiserId,generalConfig/domainUrl) Restituisce solo il valore valori di advertiserId e generalConfig domainUrl per ogni elemento advertisers un array di dati.
Gestione delle risposte parziali

Dopo che un server elabora una richiesta valida che include la query fields , restituisce un codice di stato HTTP 200 OK, insieme alla richiesta e i dati di Google Cloud. Se il parametro di query fields contiene un errore o non è valido per altri motivi, il parametro il server restituisce un codice di stato HTTP 400 Bad Request, insieme a un errore che indica il problema nella selezione dei campi (ad esempio "Invalid field selection a/b").