Wyślij żądania zbiorcze

Każde połączenie HTTP, które tworzy Twoja aplikacja, skutkuje określonym narzutem. Ta biblioteka obsługuje grupowanie, , aby umożliwić aplikacji wykonanie kilku wywołań interfejsu API w jednym żądaniu HTTP. Przykłady sytuacji, w których warto używać 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 musisz wykonać więcej połączeń, użyj kilku żądań zbiorczych.

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 null, jeśli żądanie zostało zrealizowane.
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();