Performansı Artırma

Bu belgede, uygulamanızın performansını artırmak için kullanabileceğiniz bazı teknikler ele alınmaktadır. Bazı durumlarda, sunulan fikirleri açıklamak için uygulanmış diğer API'lerden örnekler kullanılır. Ancak Display & Video 360 API'si için de aynı kavramlar geçerlidir.

Kısmi kaynaklarla çalışma

API çağrılarınızın performansını artırmanın bir diğer yolu, verilerin yalnızca ilgilendiğiniz kısmını istemektir. Bu sayede uygulamanız gereksiz alanları aktarmaktan, ayrıştırmaktan ve depolamaktan kaçınarak ağ, CPU ve bellek gibi kaynakları daha verimli kullanabilir.

Kısmi yanıt

Sunucu, istekleri işledikten sonra varsayılan olarak kaynağın tam temsilini geri gönderir. Daha iyi performans için sunucudan yalnızca gerçekten ihtiyacınız olan alanları göndermesini isteyebilir ve bunun yerine kısmi yanıt alabilirsiniz.

Kısmi yanıt isteğinde bulunmak için döndürülmesini istediğiniz alanları belirtmek üzere fields istek parametresini kullanın. Bu parametreyi, yanıt verileri döndüren tüm isteklerle kullanabilirsiniz.

Örnek

Aşağıdaki örnekte, fields parametresinin Display & Video 360 API ile kullanımı gösterilmektedir.

Basit istek: Bu HTTP GET isteği, fields parametresini atlar ve kaynağın tamamını döndürür.

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

Tam kaynak yanıtı: Tam kaynak verileri, kısalık için atlanan diğer birçok alanın yanı sıra aşağıdaki alanları içerir.

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": "..."
}

Kısmi yanıt isteği: Aynı kaynak için aşağıdaki istek, döndürülen veri miktarını önemli ölçüde azaltmak amacıyla fields parametresini kullanır.

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

Kısmi yanıt: Sunucu, yukarıdaki isteğe yanıt olarak yalnızca her reklamverenin reklamveren kimliğini, görünen adını ve varsa iş ortağı kimliği özelliğini içeren, sadeleştirilmiş bir reklamveren dizisi içeren bir yanıt gönderir.

200 OK

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

Yanıtın, yalnızca seçili alanları ve bunları kapsayan üst nesneleri içeren bir JSON nesnesi olduğunu unutmayın.

Ardından, fields parametresinin nasıl biçimlendirileceğiyle ilgili ayrıntılar ve ardından yanıtta tam olarak nelerin döndürüldüğüyle ilgili daha fazla ayrıntı ele alınmaktadır.

Alanlar parametresi söz dizimi özeti

fields istek parametresi değerinin biçimi, XPath söz dizimine dayanır. Desteklenen söz dizimi aşağıda özetlenmiştir. Aşağıdaki bölümde ek örnekler verilmiştir.

  • Birden fazla alan seçmek için virgülle ayrılmış liste kullanın.

  • a alanında iç içe yerleştirilmiş bir b alanını seçmek için a/b simgesini, b alanında iç içe yerleştirilmiş bir c alanını seçmek için a/b/c simgesini kullanın.

  • Dizi veya nesnelerin belirli bir alt alan grubunu istemek için ifadeleri paranteze "( )" yerleştirerek alt seçici kullanın.

    Örneğin: fields=advertisers(advertiserId,generalConfig/domainUrl), advertisers dizisindeki her öğe için yalnızca reklamveren kimliğini ve alan URL'sini döndürür. Ayrıca, fields=advertisers(advertiserId)'in fields=advertisers/advertiserId ile eşdeğer olduğu tek bir alt alan da belirtebilirsiniz.

fields parametresinin kullanıldığı diğer örnekler

Aşağıdaki örneklerde, fields parametre değerinin yanıtı nasıl etkilediği açıklanmaktadır.

Döndürülmesini istediğiniz alanları tanımlayın veya alan seçimleri yapın.

fields istek parametresi değeri, virgülle ayrılmış bir alan listesidir ve her alan, yanıtın köküne göre belirtilir. Bu nedenle, list işlemi gerçekleştiriyorsanız yanıt bir koleksiyondur ve genellikle bir dizi kaynak içerir. Tek bir kaynak döndüren bir işlem gerçekleştiriyorsanız alanlar bu kaynağa göre belirtilir. Seçtiğiniz alan bir diziyse (veya dizinin parçasıysa) sunucu, dizideki tüm öğelerin seçili kısmını döndürür.

Koleksiyon düzeyinde bazı örnekler aşağıda verilmiştir:

Örnek Etki
advertisers Her öğedeki tüm alanlar dahil olmak üzere advertisers dizisindeki tüm öğeleri döndürür ancak diğer alanları döndürmez.
advertisers,nextPageToken Hem nextPageToken alanını hem de advertisers dizisindeki tüm öğeleri döndürür.
advertisers/advertiserId advertisers dizisindeki tüm öğeler için yalnızca advertiserId döndürülür.

İç içe yerleştirilmiş bir alan döndürüldüğünde yanıt, kapsayıcı üst nesneleri içerir. Üst alanlar, açıkça seçilmedikleri sürece başka alt alanlar içermez.
advertisers/generalConfig/domainUrl generalConfig nesnesi için domainUrl alanını döndürür. Bu alan, advertisers dizisinin altına yerleştirilmiştir.

Kaynak düzeyinde bazı örnekler:

Örnek Etki
advertiserId İstenen kaynağın advertiserId alanını döndürür.
generalConfig/domainUrl İstenen kaynaktaki generalConfig nesnesi için domainUrl alanını döndürür.
Alt seçimler kullanarak belirli alanların yalnızca belirli bölümlerini isteyin.

Varsayılan olarak, isteğiniz belirli alanları belirtiyorsa sunucu, nesneleri veya dizi öğelerini tamamen döndürür. Yalnızca belirli alt alanları içeren bir yanıt belirtebilirsiniz. Bunu, aşağıdaki örnekte gösterildiği gibi "( )" alt seçim söz dizimini kullanarak yaparsınız.

Örnek Etki
advertisers(advertiserId,generalConfig/domainUrl) advertisers dizisindeki her öğe için yalnızca advertiserId ve generalConfig domainUrl değerlerini döndürür.
Kısmi yanıtlarla ilgilenme

Bir sunucu, fields sorgu parametresini içeren geçerli bir isteği işledikten sonra istenen verilerle birlikte bir HTTP 200 OK durum kodu döndürür. fields sorgu parametresinde hata varsa veya parametre geçersizse sunucu, alanlar seçiminde neyin yanlış olduğunu belirten bir hata mesajıyla birlikte HTTP 400 Bad Request durum kodu döndürür (örneğin, "Invalid field selection a/b").