Este documento aborda algumas técnicas que você pode usar para melhorar o desempenho de seu aplicativo. Em alguns casos, são usados exemplos de outras APIs implementadas para ilustrar as ideias apresentadas. No entanto, os mesmos conceitos são aplicáveis para a guia Display & API Video 360.
Como trabalhar com recursos parciais
Outra forma de melhorar o desempenho das chamadas de API é solicitar somente a parte dos dados em que você tem interesse. Isso permite que seu aplicativo evitar a transferência, a análise e o armazenamento de campos desnecessários recursos como rede, CPU e memória com mais eficiência.
Resposta parcial
Por padrão, o servidor retorna a representação completa de um recurso após processando solicitações. Para um melhor desempenho, você pode pedir ao servidor para enviar somente os campos realmente necessários e, em vez disso, receber uma resposta parcial.
Para solicitar uma resposta parcial, use o parâmetro de solicitação fields
para especificar
os campos que você quer retornar. Você pode usar esse parâmetro com qualquer solicitação
que retorna dados de resposta.
Exemplo
O exemplo a seguir mostra o uso do parâmetro fields
com o
Rede de Display e API 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/v3/advertisers?partnerId=1
Resposta completa do recurso: os dados completos do recurso incluem o seguinte: , junto com muitos outros que foram omitidos para concisão.
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 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/v3/advertisers?partnerId=1&fields=advertisers(advertiserId,partnerId,displayName)
Resposta parcial:em resposta à solicitação acima, o servidor envia de volta um que contenha uma matriz de anunciantes reduzida que inclua somente os ID do anunciante, nome de exibição e propriedade do ID do parceiro de cada anunciante, se presente.
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 pai.
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 da solicitação fields
se baseia vagamente em XPath.
. A sintaxe suportada está resumida abaixo, e exemplos adicionais são
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
. usara/b/c
para selecionar um campoc
aninhado emb
.Use um subseletor para solicitar um conjunto de subcampos específicos de matrizes ou objetos ao colocar expressões entre parênteses "
( )
".Por exemplo:
fields=advertisers(advertiserId,generalConfig/domainUrl)
retorna somente o ID do anunciante e o URL de 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 separada por vírgulas. cada campo é especificado em relação à raiz da resposta. Assim, se você estão executando uma operaçãolist
, a resposta é uma coleção geralmente inclui uma série de recursos. Se você estiver executando uma operação que retorna um único recurso, os campos são especificados em relação a recurso. Se o campo selecionado for (ou fizer parte de) uma matriz, o servidor retorna 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 na Matriz advertisers
, incluindo todos os campos em cada elemento, mas nenhum outro campo.advertisers,nextPageToken
Retorna nextPageToken
campo e todos os elementos na matrizadvertisers
.advertisers/advertiserId
Retorna apenas o advertiserId
para todos os elementos na matrizadvertisers
.
Sempre que um campo aninhado for for retornado, a resposta incluirá os objetos pai incluídos. Os campos pai não incluem quaisquer outros campos filhos, a menos que eles também são selecionados explicitamente.advertisers/generalConfig/domainUrl
Retorna o campo domainUrl
. para o objetogeneralConfig
, que está aninhado em matrizadvertisers
.Veja alguns exemplos com base no recurso:
Exemplo Efeito advertiserId
Retorna o campo advertiserId
. do recurso solicitado.generalConfig/domainUrl
Retorna o campo domainUrl
. para o objetogeneralConfig
no recurso solicitado.- Solicite apenas partes de campos específicos usando subseleções.
Por padrão, se a solicitação especificar campos específicos, o servidor retornará os objetos ou elementos da matriz por completo. É possível especificar uma resposta que inclui apenas alguns subcampos. Para isso, use "
( )
". sintaxe de subseleção, como no exemplo abaixo.Exemplo Efeito advertisers(advertiserId,generalConfig/domainUrl)
Retorna somente o valores de advertiserId
e generalConfigdomainUrl
para cada elemento aadvertisers
matriz.
Como processar respostas parciais
Depois que um servidor processar uma solicitação válida que inclua a consulta fields
ele retorna um código de status HTTP 200 OK
, junto com a solicitação
dados. Se o parâmetro de consulta fields
tiver um erro ou for inválido, o
do servidor retorna um código de status HTTP 400 Bad Request
com um erro
informando o que estava errado com a seleção dos campos (por exemplo,
"Invalid field selection a/b"
).