En este documento, se presentan técnicas que puedes usar para mejorar el rendimiento de tu aplicación. En algunos casos, se usan ejemplos de otras APIs implementadas para ilustrar las ideas presentadas. Sin embargo, los mismos conceptos se aplican a la API de Display & Video 360.
Trabaja con recursos parciales
Otra forma de mejorar el rendimiento de tus llamadas a la API es solicitar solo la parte de los datos que te interesa. Esto permite que tu aplicación evite la transferencia, el análisis y el almacenamiento de campos innecesarios, por lo que pueda usar recursos como la red, la CPU y la memoria con más eficiencia.
Respuesta parcial
De forma predeterminada, el servidor muestra la representación completa de un recurso después de procesar las solicitudes. Para lograr un mejor rendimiento, puedes pedirle al servidor que envíe solo los campos que realmente necesitas y obtener una respuesta parcial en su lugar.
Si quieres solicitar una respuesta parcial, usa el parámetro de solicitud de fields
para especificar los campos que deseas que se muestren. Puedes usar este parámetro con cualquier solicitud que muestre datos de respuesta.
Ejemplo
En el siguiente ejemplo, se muestra el uso del parámetro fields
con la API de Display & Video 360.
Solicitud simple: Esta solicitud HTTP GET
omite el parámetro fields
y muestra el recurso completo.
GET https://displayvideo.googleapis.com/v4/advertisers?partnerId=1
Respuesta de recursos completos: Los datos de recursos completos incluyen los siguientes campos, junto con muchos otros que se omitieron para abreviar.
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": "..."
}
Solicitud de una respuesta parcial: La siguiente solicitud de este mismo recurso usa el parámetro fields
para reducir la cantidad de datos que se muestran de manera significativa.
GET https://displayvideo.googleapis.com/v4/advertisers?partnerId=1&fields=advertisers(advertiserId,partnerId,displayName)
Respuesta parcial: En respuesta a la solicitud anterior, el servidor envía una respuesta que contiene un array de anunciantes reducido que incluye solo el ID del anunciante, el nombre visible y la propiedad del ID del socio de cada anunciante, si está presente.
200 OK
{
"advertisers": [
{
"advertiserId": "1",
"partnerId": "1",
"displayName": "Example Advertiser 1"
},
{
"advertiserId": "2",
"partnerId": "1",
"displayName": "Example Advertiser 2"
},
...
]
}
Ten en cuenta que la respuesta es un objeto JSON que incluye solo los campos seleccionados y sus objetos superiores adjuntos.
A continuación, se presentan los detalles sobre cómo dar formato al parámetro de fields
. Luego, se presentan más detalles sobre qué es lo que se muestra en la respuesta.
Resumen de la sintaxis de los parámetros de campos
El formato del valor del parámetro de solicitud de fields
se basa de manera general en la sintaxis de XPath. La sintaxis compatible se resume a continuación y se proporcionan ejemplos adicionales en la siguiente sección.
Usa una lista separada por comas para seleccionar varios campos.
Usa
a/b
si quieres seleccionar un campob
que se anida en el campoa
; usaa/b/c
para seleccionar un campoc
anidado enb
.Puedes usar un subselector para solicitar un conjunto de subcampos específicos de objetos o arreglos, si colocas las expresiones entre paréntesis “
( )
”.Por ejemplo,
fields=advertisers(advertiserId,generalConfig/domainUrl)
solo muestra el ID del anunciante y la URL del dominio para cada elemento del array de anunciantes. También puedes especificar un subcampo único, en el quefields=advertisers(advertiserId)
es equivalente afields=advertisers/advertiserId
.
Más ejemplos del uso del parámetro de campos
En los siguientes ejemplos, se incluyen descripciones de cómo el valor del parámetro de fields
afecta la respuesta.
- Identifica los campos que deseas que se muestren o realiza selecciones de campo.
El valor del parámetro de solicitud de
fields
es una lista de campos separados por comas y cada campo se especifica en relación con la raíz de la respuesta. Por lo tanto, si realizas una operaciónlist
, la respuesta es una colección y, por lo general, incluye un array de recursos. Si realizas una operación que muestra un recurso único, los campos se especifican en relación con ese recurso. Si el campo que seleccionas es un array, o es parte de uno, el servidor muestra la parte seleccionada de todos los elementos del array.A continuación, se presentan algunos ejemplos a nivel de la colección:
Ejemplo Efecto advertisers
Muestra todos los elementos del array advertisers
, incluidos todos los campos de cada elemento, pero ningún otro campo.advertisers,nextPageToken
Muestra el campo nextPageToken
y todos los elementos del arrayadvertisers
.advertisers/advertiserId
Muestra solo el advertiserId
para todos los elementos del arrayadvertisers
.
Cada vez que se muestra un campo anidado, la respuesta incluye los objetos superiores adjuntos. Los campos superiores no incluyen ningún otro campo secundario, a menos que también se seleccionen de manera explícita.advertisers/generalConfig/domainUrl
Muestra el campo domainUrl
del objetogeneralConfig
, que se anida en el arrayadvertisers
.A continuación, se presentan algunos ejemplos a nivel de recursos:
Ejemplo Efecto advertiserId
Muestra el campo advertiserId
del recurso solicitado.generalConfig/domainUrl
Muestra el campo domainUrl
del objetogeneralConfig
en el recurso solicitado.- Solicita solo las partes de los campos específicos mediante subselecciones.
De forma predeterminada, si tu solicitud especifica campos particulares, el servidor muestra los objetos o los elementos del array en su totalidad. Puedes especificar una respuesta que incluya solo ciertos subcampos. Para hacerlo, usa la sintaxis de la subselección de “
( )
”, como se muestra en el siguiente ejemplo.Ejemplo Efecto advertisers(advertiserId,generalConfig/domainUrl)
Muestra solo los valores de advertiserId
y generalConfigdomainUrl
para cada elemento del arrayadvertisers
.
Controla las respuestas parciales
Después de que un servidor procesa una solicitud válida que incluye el parámetro de búsqueda de fields
, devuelve un código de estado HTTP 200 OK
, junto con los datos solicitados. Si el parámetro de búsqueda de fields
tiene un error o no es válido, el servidor muestra un código de estado HTTP 400 Bad Request
, junto con un mensaje de error en el que se comunica al usuario qué fue lo que falló con la selección de campos (por ejemplo, "Invalid field selection a/b"
).