Toplu İstek Gönderme

Uygulamanızın yaptığı her HTTP bağlantısı belirli bir miktarda ek yüke neden olur. Bu kitaplık, uygulamanızın tek bir HTTP isteğine birkaç API çağrısı koymasına olanak tanımak için toplu işlemi destekler. Gruplandırmayı kullanmak isteyebileceğiniz durumlara örnekler:

  • Yapmanız gereken çok sayıda küçük isteğiniz var ve HTTP isteği ek yükünü en aza indirmek istiyorsunuz.
  • Bir kullanıcı, uygulamanız çevrimdışıyken verilerde değişiklik yapmıştır. Bu nedenle, uygulamanızın çok sayıda güncelleme ve silme işlemi göndererek yerel verilerini sunucuyla senkronize etmesi gerekir.

Not: Tek bir toplu istekte 1.000 çağrı ile sınırlısınız. Bundan daha fazla çağrı yapmanız gerekiyorsa birden çok toplu istek kullanın.

Not: Toplu istekte medya yükleme nesnesi kullanamazsınız.

Ayrıntılar

Bir BatchRequest nesnesi örnekleyip yürütmek istediğiniz her istek için Queue yöntemini çağırarak toplu istekler oluşturursunuz. Her istekle birlikte, uygulamanız bu isteğe yanıt aldığında çağrılacak bir geri çağırma iletin. Geri çağırma işlevinin bağımsız değişkenleri şunlardır:

içerik
İçerik yanıtı veya istek başarısız olduysa null.
hata
Hata veya istek başarılı olduysa null.
indeks
Tek bir isteğin dizini.
mesaj
Tüm üst bilgilerini ve içeriğini içeren tam HTTP mesajı.
İstekleri ekledikten sonra istekleri yapmak için ExecuteAsync yöntemini çağırırsınız.

Aşağıdaki kod snippet'inde iki API isteği tek bir HTTP isteğinde gruplandırılır ve her API isteği bir geri çağırma sağlanır:

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