Kirim Permintaan Batch

Setiap koneksi HTTP yang dibuat aplikasi Anda akan menghasilkan sejumlah overhead tertentu. Library ini mendukung pengelompokan, sehingga 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 yang harus dibuat dan ingin meminimalkan overhead permintaan HTTP.
  • 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 upload media dalam permintaan batch.

Detail

Anda membuat permintaan batch dengan membuat instance objek BatchRequest, lalu memanggil metode Queue untuk setiap permintaan yang ingin dieksekusi. Dengan setiap permintaan, teruskan callback yang akan dipanggil saat aplikasi Anda menerima respons untuk 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();