Batchanfragen senden

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. Daher muss die Anwendung ihre lokalen Daten mit dem Server synchronisieren, indem sie viele Aktualisierungen und Löschvorgänge sendet.

Hinweis: Eine Batchanfrage ist auf 1.000 Aufrufe begrenzt. Wenn Sie mehr Aufrufe ausführen müssen, verwenden Sie mehrere Batchanfragen.

Hinweis: Sie können in einer Batchanfrage kein Media-Upload-Objekt verwenden.

Details

Zum Erstellen von Batchanfragen instanziieren Sie ein BatchRequest-Objekt und rufen dann die Methode Queue für jede Anfrage auf, die Sie ausführen möchten. Übergeben Sie bei jeder Anfrage einen Callback, der aufgerufen wird, wenn die Anwendung die Antwort auf diese Anfrage empfängt. Die Argumente der Callback-Funktion:

Inhalt
Die Inhaltsantwort oder null, wenn die Anfrage fehlgeschlagen ist.
error
Den 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.
Nachdem Sie die Anfragen hinzugefügt haben, rufen Sie die Methode ExecuteAsync auf, um die Anfragen zu stellen.

Im folgenden Code-Snippet werden zwei API-Anfragen in einer einzigen HTTP-Anfrage zusammengefasst und für jede API-Anfrage wird ein Callback bereitgestellt:

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