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