Wyślij żądania zbiorcze

Każde połączenie HTTP, które tworzy Twoja aplikacja, skutkuje określonym narzutem. Biblioteka ta obsługuje grupowanie, aby umożliwić aplikacji umieszczanie kilku wywołań interfejsu API w jednym żądaniu HTTP. Przykłady sytuacji, w których warto użyć grupowania:

  • Masz do wykonania wiele małych żądań i chcesz zminimalizować narzut żądania HTTP.
  • użytkownik wprowadził zmiany w danych, gdy aplikacja była offline; więc aplikacja musi zsynchronizować swoje dane lokalne z serwerem przez wysyłanie wielu aktualizacji i usunięć.

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

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

Szczegóły

Żądania zbiorcze tworzysz przez utworzenie instancji BatchRequest a następnie wywołanie metody Queue w przypadku każdego żądania, które chcesz wykonać. Z każdym żądaniem przekaż wywołanie zwrotne, które zostanie nawiązane, gdy aplikacja otrzyma odpowiedź na to żądanie. Argumenty funkcji wywołania zwrotnego to:

treść
Odpowiedź dotycząca treści lub null, jeśli żądanie nie zostało zrealizowane.
błąd
Błąd lub wartość null, jeśli żądanie zostało wykonane.
indeks
Indeks pojedynczego żądania.
wiadomość
Pełna wiadomość HTTP ze wszystkimi nagłówkami i treścią.
.
Po dodaniu żądań wywołujesz funkcję ExecuteAsync do wysyłania żądań.

W tym fragmencie kodu dwa żądania do interfejsu API są grupowane w jedno żądanie HTTP, a każde żądanie do interfejsu API otrzymuje 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();