Kirim Permintaan Batch

Setiap koneksi HTTP yang dibuat aplikasi Anda menghasilkan sejumlah overhead tertentu. Library ini mendukung batching, untuk memungkinkan aplikasi Anda menempatkan beberapa panggilan API ke dalam satu permintaan HTTP. Contoh situasi saat Anda mungkin ingin menggunakan pengelompokan:

  • Anda memiliki banyak permintaan kecil yang harus dibuat dan ingin meminimalkan overhead permintaan HTTP.
  • Seorang pengguna membuat perubahan pada data saat aplikasi Anda offline, sehingga aplikasi Anda perlu menyinkronkan data lokalnya dengan server dengan mengirimkan banyak update 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 objek upload media dalam permintaan batch.

Detail

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

content
Respons konten, atau null jika permintaan gagal.
error
Error, atau null jika permintaan berhasil.
index
Indeks permintaan individual.
pesan
Pesan HTTP lengkap yang mencakup semua header dan kontennya.
Setelah menambahkan permintaan, panggil metode ExecuteAsync untuk membuat permintaan.

Dalam cuplikan kode berikut, dua permintaan API ditumpuk menjadi satu permintaan HTTP, dan setiap permintaan API diberi 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();