バッチ リクエストの送信

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

アプリケーションが HTTP 接続を行うたびに、ある程度のオーバーヘッドが発生します。このライブラリはバッチ処理をサポートしているため、アプリケーションは複数の API 呼び出しを 1 つの HTTP リクエストにまとめることができます。バッチ処理は次のような状況で使用します。

  • 小さなリクエストが多数あり、HTTP リクエストのオーバーヘッドを最小限に抑えるため。
  • アプリケーションがオフラインのときにユーザーがデータを変更したため、更新や削除の呼び出しを大量に送信してローカルデータとサーバー間で同期させる必要がある。

: 1 つのバッチ リクエストにつき 1,000 回の呼び出しに制限されます。 これよりも多くの呼び出しを行う必要がある場合は、複数のバッチ リクエストを使用します。

: バッチ リクエストでメディア アップロード オブジェクトを使用することはできません。

詳細

バッチ リクエストを作成するには、BatchRequest オブジェクトをインスタンス化してから、実行するリクエストごとに Queue メソッドを呼び出します。リクエストごとにコールバックを渡し、アプリケーションがそのリクエストに対するレスポンスを受信したときに呼び出されるようにします。コールバック関数の引数は次のとおりです。

コンテンツ
コンテンツ レスポンス。リクエストが失敗した場合は null
エラー
エラー。リクエストが成功した場合は null
index
個々のリクエストのインデックス。
メッセージ
すべてのヘッダーとコンテンツを含む完全な HTTP メッセージ。
リクエストを追加したら、ExecuteAsync メソッドを呼び出してリクエストを行います。

次のコード スニペットでは、2 つの API リクエストが 1 つの HTTP リクエストにまとめられ、各 API リクエストにコールバックが提供されています。

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