Kirim Permintaan Batch

Tiap koneksi HTTP yang dibuat aplikasi Anda menghasilkan jumlah overhead tertentu. Library ini mendukung batching, agar aplikasi Anda dapat menempatkan beberapa panggilan API ke dalam satu permintaan HTTP. Contoh situasi saat Anda mungkin ingin menggunakan pengelompokan:

  • Anda memiliki banyak permintaan kecil untuk dibuat dan ingin meminimalkan beban permintaan HTTP.
  • Seorang pengguna membuat perubahan pada data saat aplikasi Anda offline, sehingga aplikasi Anda perlu menyinkronkan data lokalnya dengan server dengan mengirim banyak pembaruan dan penghapusan.

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

Catatan: Anda tidak dapat menggunakan upload media dalam permintaan batch.

Detail

Anda membuat permintaan batch dengan membuat instance BatchRequest lalu memanggil metode Queue untuk setiap permintaan yang ingin Anda jalankan. Dengan setiap permintaan, teruskan callback yang akan dipanggil saat aplikasi Anda menerima respons terhadap permintaan tersebut. Argumen fungsi callback adalah:

konten
Respons konten, atau null jika permintaan gagal.
error
Error, atau null jika permintaan berhasil.
indeks
Indeks permintaan individual.
pesan
Pesan HTTP lengkap yang menyertakan semua header dan kontennya.
Setelah menambahkan permintaan, Anda memanggil ExecuteAsync untuk membuat permintaan.

Dalam cuplikan kode berikut, dua permintaan API ditampung menjadi satu permintaan HTTP, dan setiap permintaan API akan mendapatkan callback:

UserCredential credential;
using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
{
    credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets,
        new[] { CalendarService.Scope.Calendar },
        "user", CancellationToken.None, new FileDataStore("Calendar.Sample.Store"));
}

// Create the service.
var service = new CalendarService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = "Google Calendar API Sample",
    });

// Create a batch request.
var request = new BatchRequest(service);
request.Queue<CalendarList>(service.CalendarList.List(),
     (content, error, i, message) =>
     {
         // Put your callback code here.
     });
request.Queue<Event>(service.Events.Insert(
     new Event
     {
         Summary = "Learn how to execute a batch request",
         Start = new EventDateTime() { DateTime = new DateTime(2014, 1, 1, 10, 0, 0) },
         End = new EventDateTime() { DateTime = new DateTime(2014, 1, 1, 12, 0, 0) }
     }, "YOUR_CALENDAR_ID_HERE"),
     (content, error, i, message) =>
     {
         // Put your callback code here.
     });
// You can add more Queue calls here.

// Execute the batch request, which includes the 2 requests above.
await request.ExecuteAsync();