Este documento aborda algumas técnicas que podem ser usadas para melhorar o desempenho do aplicativo. Em alguns casos, exemplos de outras APIs implementadas são usados para ilustrar as ideias apresentadas. No entanto, os mesmos conceitos são aplicáveis à API Display & Video 360.
Como trabalhar com recursos parciais
Outra maneira de melhorar o desempenho das suas chamadas de API é solicitar apenas a parte dos dados na qual você tem interesse. Isso permite que o aplicativo evite transferir, analisar e armazenar campos desnecessários para que recursos como rede, CPU e memória sejam usados de maneira mais eficiente.
Resposta parcial
Por padrão, depois de processar as solicitações, o servidor envia de volta a representação completa de um recurso. Para melhorar o desempenho, solicite ao servidor o envio apenas dos campos realmente necessários para receber uma resposta parcial.
Para solicitar uma resposta parcial, use o parâmetro de solicitação fields
para especificar
os campos que você quer que sejam retornados. Use esse parâmetro com qualquer solicitação
que retorne dados de resposta.
Exemplo
O exemplo a seguir mostra o uso do parâmetro fields
com a
API Display & Video 360.
Solicitação simples:essa solicitação HTTP GET
omite o parâmetro fields
e
retorna o recurso completo.
GET https://displayvideo.googleapis.com/v4/advertisers?partnerId=1
Resposta de recursos completos:os dados de recursos completos incluem os campos a seguir, além de muitos outros omitidos para agilizar o processo.
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": "..."
}
Solicitação de uma resposta parcial:a solicitação a seguir para esse mesmo recurso
usa o parâmetro fields
para reduzir significativamente a quantidade de dados retornados.
GET https://displayvideo.googleapis.com/v4/advertisers?partnerId=1&fields=advertisers(advertiserId,partnerId,displayName)
Resposta parcial:em resposta à solicitação acima, o servidor envia de volta uma resposta que contém uma matriz de anunciantes simplificada que inclui apenas o ID do anunciante, o nome de exibição e a propriedade do ID do parceiro de cada anunciante, se estiverem presentes.
200 OK
{
"advertisers": [
{
"advertiserId": "1",
"partnerId": "1",
"displayName": "Example Advertiser 1"
},
{
"advertiserId": "2",
"partnerId": "1",
"displayName": "Example Advertiser 2"
},
...
]
}
A resposta é um objeto JSON que inclui apenas os campos selecionados e os respectivos objetos pais.
Os detalhes sobre como formatar o parâmetro fields
são abordados a seguir, seguidos por
mais detalhes sobre o que exatamente é retornado na resposta.
Resumo da sintaxe do parâmetro "Campos"
O formato do valor do parâmetro de solicitação fields
baseia-se vagamente na sintaxe
XPath. Confira abaixo um resumo da sintaxe compatível e outros exemplos
fornecidos na seção a seguir.
Use uma lista separada por vírgulas para selecionar vários campos.
Use
a/b
para selecionar um campob
aninhado no campoa
. Usea/b/c
para selecionar um campoc
aninhado emb
.Use um subseletor para solicitar um conjunto de subcampos específicos de matrizes ou objetos. Basta colocar expressões entre parênteses
( )
.Por exemplo:
fields=advertisers(advertiserId,generalConfig/domainUrl)
retorna apenas o ID do anunciante e o URL do domínio para cada elemento na matriz de anunciantes. Também é possível especificar um único subcampo, em quefields=advertisers(advertiserId)
é equivalente afields=advertisers/advertiserId
.
Mais exemplos do uso do parâmetro fields
Os exemplos abaixo incluem descrições de como o valor do parâmetro fields
afeta a resposta.
- Identifique os campos a serem retornados ou faça seleções de campos.
O valor do parâmetro de solicitação
fields
é uma lista de campos separados por vírgulas, e cada campo é especificado em relação à raiz da resposta. Portanto, se você estiver executando uma operaçãolist
, a resposta será uma coleção que, geralmente, inclui uma matriz de recursos. Se você estiver executando uma operação que retorne um único recurso, os campos serão especificados em relação a esse recurso. Se o campo selecionado for uma matriz, ou parte dela, o servidor vai retornar a parte selecionada de todos os elementos na matriz.Veja alguns exemplos do nível de coleção:
Exemplo Efeito advertisers
Retorna todos os elementos da matriz advertisers
, incluindo todos os campos em cada elemento, mas nenhum outro campo.advertisers,nextPageToken
Retorna o campo nextPageToken
e todos os elementos na matrizadvertisers
.advertisers/advertiserId
Retorna apenas o advertiserId
para todos os elementos da matrizadvertisers
.
Sempre que um campo aninhado é retornado, a resposta inclui os objetos pais incluídos. Os campos pais não incluem outros campos filhos, a menos que eles também sejam selecionados explicitamente.advertisers/generalConfig/domainUrl
Retorna o campo domainUrl
para o objetogeneralConfig
, que está aninhado na matrizadvertisers
.Veja alguns exemplos com base no recurso:
Exemplo Efeito advertiserId
Retorna o campo advertiserId
do recurso solicitado.generalConfig/domainUrl
Retorna o campo domainUrl
do objetogeneralConfig
no recurso solicitado.- Solicite apenas partes de campos específicos usando subseleções.
Por padrão, se houver campos específicos especificados na solicitação, o servidor vai retornar os objetos ou elementos da matriz por completo. É possível especificar uma resposta que inclua apenas alguns subcampos. Para fazer isso, use a sintaxe de subseleção
( )
, como no exemplo abaixo.Exemplo Efeito advertisers(advertiserId,generalConfig/domainUrl)
Retorna apenas os valores de advertiserId
e generalConfigdomainUrl
para cada elemento na matrizadvertisers
.
Como processar respostas parciais
Depois que o servidor processar uma solicitação válida que inclua o parâmetro de consulta fields
, ele vai enviar de volta um código de status HTTP 200 OK
, além dos dados solicitados. Se o parâmetro de consulta fields
tiver um erro ou for inválido, o
servidor vai retornar um código de status HTTP 400 Bad Request
com uma mensagem
de erro informando o que havia de errado com a seleção de campos (por exemplo,
"Invalid field selection a/b"
).