Google Analytics API İsteklerini Gruplama

Bu belgede, istemcinizin kurması gereken HTTP bağlantılarının sayısını azaltmak için API çağrılarını nasıl toplu hale getireceğiniz gösterilmektedir.

Bu belge özellikle HTTP isteği göndererek toplu istek yapma hakkındadır. Bunun yerine, toplu istek yapmak için bir Google istemci kitaplığı kullanıyorsanız istemci kitaplığının dokümanlarına bakın.

Genel bakış

İstemcinizin her bir HTTP bağlantısı, belirli miktarda ek yüke neden olur. Google Analytics API'sı, istemcinizin tek bir HTTP isteğine birkaç API çağrısı koymasına olanak tanımak için toplu işlemi destekler.

Gruplama işlemini kullanabileceğiniz durumlara örnekler:

  • Kullanıcı izinleri güncelleniyor. Kullanıcı izinlerini güncellerken toplu istekler yaptığınızda elde ettiğiniz belirli performans artışları ve kota teşvikleri vardır. Ayrıntılar için Kullanıcı İzinleri geliştirici kılavuzunu inceleyin.
  • Mobil raporlama uygulamanız çevrimdışı olabilir ve uygulama tekrar çevrimiçi olduğunda bir grup veri isteğinde bulunmanız gerekir.
  • Düzenli olarak birden fazla rapor oluşturması gereken bir hizmet hesabı uygulamanız var.
  • Bir grup özel boyut veya özel metrik oluşturmanız gerekir ve yalnızca bir HTTP isteği yapmayı tercih edersiniz.

Her durumda, her bir çağrıyı ayrı ayrı göndermek yerine bunları tek bir HTTP isteğinde gruplandırabilirsiniz. Tüm dahili istekler aynı Google API'ye gitmelidir.

Tek bir toplu istekte 1.000 çağrıyla sınırlısınız. Bundan daha fazla çağrı yapmanız gerekiyorsa birden çok toplu istek kullanın.

Not: Google Analytics API'nin toplu işlem sistemi, OData toplu işleme sistemiyle aynı söz dizimini kullanır ancak anlamları farklıdır.

Grup ayrıntıları

Toplu istek, birden fazla API çağrısının bir HTTP isteğinde birleştirilmesinden oluşur ve bu çağrı, API keşif belgesinde belirtilen batchPath öğesine gönderilebilir. Varsayılan yol /batch/api_name/api_version şeklindedir. Bu bölümde toplu söz dizimi ayrıntılı olarak açıklanmaktadır; daha sonra bir örnek bulunacaktır.

Not: Toplu olarak toplanan bir n istek, kullanım sınırınıza tek bir istek olarak değil, n istekleri olarak dahil edilir. Toplu istek, işlenmeden önce bir istek grubuna ayrılır.

Toplu istek biçimi

Toplu istek, multipart/mixed içerik türünü kullanan birden fazla Google Analytics API çağrısı içeren tek bir standart HTTP isteğidir. Bu ana HTTP isteğinde, parçaların her biri iç içe yerleştirilmiş bir HTTP isteği içerir.

Her bölüm kendi Content-Type: application/http HTTP başlığıyla başlar. İsteğe bağlı bir Content-ID başlığı da olabilir. Bununla birlikte, parça başlıkları sadece parçanın başlangıcını belirtmek için yer alır; iç içe yerleştirilmiş istekten ayrıdır. Sunucu, toplu isteğin sarmalamasını ayrı istekler halinde açtıktan sonra parça başlıkları yoksayılır.

Her bölümün gövdesi, kendine ait yüklemi, URL'si, başlıkları ve gövdesi olan eksiksiz bir HTTP isteğidir. HTTP isteği, yalnızca URL'nin yol kısmını içermelidir; toplu isteklerde tam URL'lere izin verilmez.

Content-Type gibi Content- üstbilgileri hariç olmak üzere dış toplu isteğin HTTP üstbilgileri, toplu işteki her isteğe uygulanır. Hem dış istekte hem de tek bir çağrıda belirli bir HTTP üst bilgisi belirtirseniz bağımsız çağrı başlığının değeri, dış toplu istek başlığının değerini geçersiz kılar. Tek bir aramanın üstbilgileri yalnızca söz konusu çağrı için geçerlidir.

Örneğin, belirli bir çağrı için bir Yetkilendirme üst bilgisi sağlarsanız bu üstbilgi yalnızca söz konusu çağrı için geçerli olur. Dış istek için bir Yetkilendirme üst bilgisi sağlarsanız bu üstbilgi kendi Yetkilendirme başlıklarıyla geçersiz kılınmadığı sürece tek tek tüm çağrılar için geçerli olur.

Sunucu toplu isteği aldığında, her bir bölüme dış isteğin sorgu parametrelerini ve başlıklarını (uygun olduğu şekilde) uygular ve daha sonra, her bölümü ayrı bir HTTP isteği gibi değerlendirir.

Toplu isteğe yanıt verme

Sunucunun yanıtı, multipart/mixed içerik türüne sahip tek bir standart HTTP yanıtıdır; her bir bölüm, istekle aynı sırada, toplu istekteki isteklerden birine verilen yanıttır.

İstekteki parçalar gibi her yanıt bölümü de durum kodu, başlıklar ve gövdeyi içeren tam bir HTTP yanıtı içerir. İstekteki bölümler gibi her yanıt bölümünün önünde, bölümün başlangıcını belirten bir Content-Type başlığı bulunur.

İsteğin belirli bir kısmının Content-ID başlığı varsa yanıtın ilgili bölümü, aşağıdaki örnekte gösterildiği gibi, orijinal değerin önünde response- dizesinin bulunduğu, eşleşen bir Content-ID başlığına sahip olur.

Not: Sunucu, çağrılarınızı herhangi bir sırada gerçekleştirebilir. Bu anahtar kelimelerin belirttiğiniz sıraya göre yürütülmesine güvenmeyin. İki çağrının belirli bir sırada gerçekleşmesini istiyorsanız bunları tek bir istekte gönderemezsiniz. Bunun yerine, ilk çağrıyı tek başına gönderin, ardından ikinciyi göndermeden önce ilk çağrının yanıtını bekleyin.

Örnek

Aşağıdaki örnekte, Google Analytics API ile toplu işlemenin kullanımı gösterilmektedir.

Örnek toplu istek

POST /batch/analytics/v3 HTTP/1.1
Host: www.googleapis.com
Content-length: 731
Content-type: multipart/mixed; boundary=batch_0123456789
Authorization: Bearer ya29.5gFZooleNoSpGqYOOF0eFciUGz1x26k9GagZoW7HJCogWlCoNOotxlZPo7bDbwo1ykDq
--batch_0123456789
Content-Type: application/http
Content-ID: 
Content-Transfer-Encoding: binary


POST https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-1/customDimensions
Content-Type: application/json
Content-Length: 68


{
 "name": "Campaign Group",
 "scope": "SESSION",
 "active": true
}

--batch_0123456789
Content-Type: application/http
Content-ID: 
Content-Transfer-Encoding: binary


POST https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-1/customDimensions
Content-Type: application/json
Content-Length: 67


{
 "name": "Campaign Type",
 "scope": "SESSION",
 "active": true
}

--batch_0123456789--

Örnek toplu yanıt

Bu, önceki bölümde yer alan örnek isteğin yanıtıdır.

HTTP/1.1 200 OK
Content-length: 1876
X-xss-protection: 1; mode=block
X-content-type-options: nosniff
Expires: Wed, 02 Sep 2015 21:36:35 GMT
Vary: Origin,X-Origin
Server: GSE
Cache-control: private, max-age=0
Date: Wed, 02 Sep 2015 21:36:35 GMT
X-frame-options: SAMEORIGIN
Content-type: multipart/mixed; boundary=batch_KDU-RkhYyNI_AAkR9Jc5Z_Q
--batch_KDU-RkhYyNI_AAkR9Jc5Z_Q
Content-Type: application/http
Content-ID: 

HTTP/1.1 200 OK
ETag: "o-85COrcxoYkAw5itMLG4AKNpMY/L-Y_3uM9BpST8Sea-SJDRQ7N7vE"
Content-Type: application/json; charset=UTF-8
Date: Wed, 02 Sep 2015 21:36:35 GMT
Expires: Wed, 02 Sep 2015 21:36:35 GMT
Cache-Control: private, max-age=0
Content-Length: 548

{"kind":"analytics#customDimension","id":"ga:dimension18","accountId":"XXXXXX","webPropertyId":"UA-XXXXXX-1","name":"Campaign Group","index":18,"scope":"SESSION","active":true,"created":"2015-09-02T21:36:34.143Z","updated":"2015-09-02T21:36:34.143Z","selfLink":"https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-1/customDimensions/ga:dimension18","parentLink":{"type":"analytics#webproperty","href":"https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-1"}}
--batch_KDU-RkhYyNI_AAkR9Jc5Z_Q
Content-Type: application/http
Content-ID: 

HTTP/1.1 200 OK
ETag: "o-85COrcxoYkAw5itMLG4AKNpMY/VN-21fLS1T0Qko3pHEB5fi8vYJ8"
Content-Type: application/json; charset=UTF-8
Date: Wed, 02 Sep 2015 21:36:35 GMT
Expires: Wed, 02 Sep 2015 21:36:35 GMT
Cache-Control: private, max-age=0
Content-Length: 547

{"kind":"analytics#customDimension","id":"ga:dimension19","accountId":"XXXXXX","webPropertyId":"UA-XXXXXX-1","name":"Campaign Type","index":19,"scope":"SESSION","active":true,"created":"2015-09-02T21:36:35.099Z","updated":"2015-09-02T21:36:35.099Z","selfLink":"https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-1/customDimensions/ga:dimension19","parentLink":{"type":"analytics#webproperty","href":"https://www.googleapis.com/analytics/v3/management/accounts/XXXXXX/webproperties/UA-XXXXXX-1"}}
--batch_KDU-RkhYyNI_AAkR9Jc5Z_Q--

İstemci kitaplıkları

Toplu işlemi kendi dilinizde nasıl uygulayacağınızı görmek için aşağıdaki istemci kitaplığı kılavuzlarını kullanın:

Toplu işlem ve Google Analytics kotası

Gruplama işlemi sizi çok sayıda HTTP isteği oluşturma ek yükünden kurtarabilir. Bununla birlikte, toplu istek içindeki her Google Analytics API isteği günlük proje kotanızdan düşülür. Varsayılan olarak bir proje, günde en fazla 50.000 istek gönderebilir. Gruplandırma, bu kotanın altında kalmanıza yardımcı olmaz.

Toplu Kullanıcı İzinleri yazma (silme, ekleme, güncelleme) istekleri hariç, tüm hız sınırları geçerli olmaya devam eder. Örneğin, Core Reporting API, görüntüleme başına 10 eşzamanlı istek (profil) ile sınırlıdır. Gruplandırma işlemi bu sınırın altında kalmanıza yardımcı olmaz.

Hesap Kimliği başına saniyede 1,5 sorgu (QPS) sınırı, Management API Yazma İstekleri ve Temel Hazırlık API'sı Yazma İstekleri için geçerlidir. Bu nedenle, bu yazma isteklerinin toplu olarak işlenmesi performansı artırmayabilir.