Pengelompokan Permintaan Google Analytics API

Salah satu pendekatan khusus untuk pengelompokan, endpoint Batch HTTP Global (www.googleapis.com/batch), dinonaktifkan pada 12 Agustus 2020, seperti yang diumumkan di blog Developer Google. Pendekatan lain untuk pengelompokan masih berfungsi, seperti yang didokumentasikan di bagian lainnya pada halaman ini. Jika kode Anda menggunakan endpoint Batch HTTP Global, lihat postingan blog guna mengetahui petunjuk tentang transisi untuk menggunakan pendekatan lain, seperti endpoint batch HTTP khusus API (www.googleapis.com/batch/API/VERSION).

Dokumen ini menunjukkan cara mengelompokkan panggilan API secara bersamaan untuk mengurangi jumlah koneksi HTTP yang harus dibuat klien.

Dokumen ini khusus membahas cara membuat permintaan batch dengan mengirimkan permintaan HTTP. Jika sebagai gantinya, Anda menggunakan library klien Google untuk membuat permintaan batch, lihat library klien.

Ringkasan

Setiap koneksi HTTP yang dibuat klien Anda menghasilkan jumlah overhead tertentu. Google Analytics API mendukung pengelompokan, untuk memungkinkan klien Anda melakukan beberapa panggilan API ke dalam satu permintaan HTTP.

Contoh situasi ketika Anda mungkin ingin menggunakan pengelompokan:

  • Memperbarui Izin pengguna. Ada peningkatan performa tertentu dan insentif kuota yang Anda dapatkan saat membuat permintaan batch yang memperbarui izin pengguna, lihat panduan developer Izin Pengguna untuk mengetahui detailnya.
  • Aplikasi pelaporan seluler Anda mungkin offline, dan Anda perlu membuat grup permintaan data saat aplikasi kembali online.
  • Anda memiliki aplikasi akun layanan yang perlu membuat beberapa laporan secara rutin.
  • Anda harus membuat kumpulan dimensi kustom atau metrik kustom, dan memilih untuk hanya membuat satu permintaan HTTP.

Dalam setiap kasus, daripada mengirim setiap panggilan secara terpisah, Anda dapat mengelompokkannya menjadi satu permintaan HTTP. Semua permintaan dalam harus dikirim ke Google API yang sama.

Anda dibatasi hingga 1000 panggilan dalam satu permintaan batch. Jika Anda perlu melakukan lebih banyak panggilan dari itu, gunakan beberapa permintaan batch.

Catatan: Sistem batch untuk Google Analytics API menggunakan sintaksis yang sama seperti sistem pemrosesan batch Data, tetapi semantiknya berbeda.

Detail paket

Permintaan batch terdiri dari beberapa panggilan API yang digabungkan menjadi satu permintaan HTTP, yang dapat dikirim ke batchPath yang ditentukan dalam dokumen discovery API. Jalur defaultnya adalah /batch/api_name/api_version. Bagian ini menjelaskan sintaksis batch secara mendetail; nanti, ada contoh.

Catatan: Kumpulan permintaan n yang dikelompokkan bersama akan dihitung terhadap batas penggunaan Anda sebagai n permintaan, bukan sebagai satu permintaan. Permintaan batch dipisah menjadi sekumpulan permintaan sebelum diproses.

Format permintaan batch

Permintaan batch adalah permintaan HTTP standar tunggal yang berisi beberapa panggilan Google Analytics API, menggunakan jenis konten multipart/mixed. Dalam permintaan HTTP utama tersebut, setiap bagian berisi permintaan HTTP bertingkat.

Setiap bagian dimulai dengan header HTTP Content-Type: application/http-nya sendiri. Template ini juga dapat memiliki header Content-ID opsional. Namun, header bagian ada di sana untuk menandai awal bagian tersebut; header tersebut terpisah dari permintaan bertingkat. Setelah server membuka permintaan batch ke dalam permintaan yang terpisah, header bagian akan diabaikan.

Isi setiap bagian merupakan permintaan HTTP lengkap, dengan kata kerja, URL, header, dan isinya sendiri. Permintaan HTTP hanya boleh berisi bagian jalur dari URL; URL lengkap tidak diizinkan dalam permintaan batch.

Header HTTP untuk permintaan batch luar, kecuali header Content- seperti Content-Type, berlaku untuk setiap permintaan dalam batch. Jika Anda menentukan header HTTP tertentu dalam permintaan luar dan panggilan individual, nilai header panggilan individual akan menggantikan nilai header permintaan batch luar. Header untuk masing-masing panggilan hanya berlaku untuk panggilan tersebut.

Misalnya, jika Anda memberikan header Otorisasi untuk panggilan tertentu, header tersebut hanya akan berlaku untuk panggilan tersebut. Jika Anda memberikan header Otorisasi untuk permintaan luar, header tersebut akan berlaku untuk semua panggilan individual kecuali panggilan tersebut diganti dengan header Otorisasinya sendiri.

Saat server menerima permintaan batch, server menerapkan parameter kueri dan header permintaan luar (yang sesuai) untuk setiap bagian, kemudian memperlakukan setiap bagian seolah-olah merupakan permintaan HTTP terpisah.

Respons terhadap permintaan batch

Respons server adalah satu respons HTTP standar dengan jenis konten multipart/mixed; setiap bagian adalah respons terhadap salah satu permintaan dalam permintaan batch, dalam urutan yang sama seperti permintaan.

Seperti bagian dalam permintaan, setiap bagian respons berisi respons HTTP lengkap, termasuk kode status, header, dan isi. Dan seperti bagian dalam permintaan, setiap bagian respons didahului oleh header Content-Type yang menandai awal bagian tersebut.

Jika bagian permintaan tertentu memiliki header Content-ID, maka bagian respons yang sesuai akan memiliki header Content-ID yang cocok, dengan nilai asli diawali dengan string response-, seperti yang ditunjukkan dalam contoh berikut.

Catatan: Server dapat melakukan panggilan Anda dalam urutan apa pun. Jangan bergantung pada eksekusinya sesuai urutan yang Anda tentukan. Jika ingin memastikan bahwa dua panggilan terjadi dalam urutan tertentu, Anda tidak dapat mengirim keduanya dalam satu permintaan; sebagai gantinya, kirim panggilan pertama saja, lalu tunggu respons hingga yang pertama sebelum mengirimkan yang kedua.

Contoh

Contoh berikut menunjukkan penggunaan pengelompokan dengan Google Analytics API.

Contoh permintaan batch

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--

Contoh respons batch

Ini adalah respons terhadap contoh permintaan di bagian sebelumnya.

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--

Library klien

Gunakan panduan library klien berikut untuk melihat cara menerapkan Pengelompokan dalam bahasa Anda:

Pengelompokan dan kuota Google Analytics

Meskipun pengelompokan dapat menghemat biaya overhead dalam membuat banyak permintaan HTTP, setiap permintaan Google Analytics API dalam permintaan batch akan mengurangi kuota project harian Anda. Secara default,project dapat membuat hingga 50.000 permintaan per hari; pengelompokan tidak akan membantu Anda tetap di bawah kuota ini.

Dengan pengecualian permintaan menulis (menghapus, menyisipkan, memperbarui) Izin Pengguna, semua batas kapasitas masih berlaku. Misalnya, Core Reporting API dibatasi hingga 10 permintaan serentak per tampilan (profil). Pengelompokan tidak akan membantu Anda tetap di bawah batas ini.

Batas 1,5 kueri per detik (QPS) per ID Akun berlaku untuk Permintaan Tulis Management API dan Permintaan Tulis API Penyediaan. Oleh karena itu, mengelompokkan permintaan tulis ini mungkin tidak meningkatkan performa.