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.
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();