Wyślij żądania zbiorcze

Każde połączenie HTTP wykonywane przez aplikację wiąże się z określonym obciążeniem. Ta biblioteka obsługuje grupowanie, dzięki czemu aplikacja może umieścić kilka wywołań interfejsu API w jednym żądaniu HTTP. Przykłady sytuacji, w których warto użyć grupowania:

  • Masz wiele małych żądań do wykonania i chcesz zminimalizować obciążenie związane z żądaniami HTTP.
  • Użytkownik wprowadził zmiany w danych, gdy aplikacja była offline, więc musi ona zsynchronizować swoje dane lokalne z serwerem, wysyłając wiele aktualizacji i usunięć.

Uwaga: jedno żądanie zbiorcze może zawierać maksymalnie 1000 wywołań. Jeśli musisz wykonać więcej wywołań, użyj wielu żądań zbiorczych.

Uwaga: w żądaniu zbiorczym nie możesz użyć obiektu przesyłania multimediów.

Szczegóły

Żądania zbiorcze możesz tworzyć, tworząc instancję obiektu BatchRequest, a następnie wywołując metodę Queue w przypadku każdego żądania, które chcesz wykonać. Z każdym żądaniem przekazuj wywołanie zwrotne, które zostanie wykonane, gdy aplikacja otrzyma na nie odpowiedź. Argumenty funkcji wywołania zwrotnego:

treść
Odpowiedź dotycząca treści lub null, jeśli żądanie nie zostało przetworzone.
error
Błąd lub null, jeśli żądanie zostało wykonane.
index
Indeks pojedynczego żądania.
wiadomość
Pełna wiadomość HTTP zawierająca wszystkie nagłówki i treść.
Po dodaniu żądań wywołaj metodę ExecuteAsync, by je wysłać.

W poniższym fragmencie kodu 2 żądania interfejsu API są grupowane w jedno żądanie HTTP, a każde żądanie do interfejsu API przesyła wywołanie zwrotne:

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