Mejora el rendimiento

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 campo b que se anida en el campo a; usa a/b/c para seleccionar un campo c anidado en b.

  • 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 que fields=advertisers(advertiserId) es equivalente a fields=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ón list, 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 array advertisers.
advertisers/advertiserId Muestra solo el advertiserId para todos los elementos del array advertisers.

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 objeto generalConfig, que se anida en el array advertisers.

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 objeto generalConfig 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 array advertisers.
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").