Jede HTTP-Verbindung, die Ihre Anwendung herstellt, führt zu einem bestimmten Overhead. Diese Bibliothek unterstützt Batchanfragen, damit Ihre Anwendung mehrere API-Aufrufe in einer einzigen HTTP-Anfrage zusammenfassen kann. Fallbeispiele für den Einsatz von Batchanfragen:
- Sie müssen viele kleine Anfragen stellen und möchten den Aufwand für HTTP-Anfragen minimieren.
- Ein Nutzer hat Änderungen an Daten vorgenommen, während Ihre Anwendung offline war. Ihre Anwendung muss also ihre lokalen Daten mit dem Server mit vielen Updates und Löschungen.
Hinweis: Eine Batchanfrage ist auf 1.000 Aufrufe beschränkt. Wenn Sie mehr Aufrufe ausführen müssen, verwenden Sie mehrere Batchanfragen.
Hinweis: Sie können für Medien-Upload -Objekt in einer Batchanfrage.
Details
Sie erstellen Batchanfragen, indem Sie eine
BatchRequest
-Objekt und rufen Sie dann für jede auszuführende Anfrage die Methode Queue
auf.
Übergeben Sie bei jeder Anfrage einen Callback, der aufgerufen wird, wenn Ihre Anwendung
um die Antwort auf diese Anfrage zu erhalten.
Die Argumente der Callback-Funktion sind:
- Inhalt
- Die Inhaltsantwort oder
null
, wenn die Anfrage fehlgeschlagen ist. - Fehler
- Der Fehler oder
null
, wenn die Anfrage erfolgreich war. - Index
- Der Index der einzelnen Anfrage.
- Nachricht
- Die vollständige HTTP-Nachricht mit allen Headern und Inhalten.
ExecuteAsync
, um die Anfragen zu senden.
Im folgenden Code-Snippet werden zwei API-Anfragen in einer einzigen HTTP-Anfrage zusammengefasst. und jeder API-Anfrage ein Callback bereitgestellt wird:
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();