일괄 요청 전송

애플리케이션이 수행하는 각 HTTP 연결에서 일정량의 오버헤드가 발생합니다. 이 라이브러리는 일괄 처리를 지원하며 애플리케이션이 여러 API 호출을 단일 HTTP 요청에 넣을 수 있도록 합니다. 다음과 같은 경우에 일괄 처리를 사용할 수 있습니다.

  • 실행할 작은 요청이 여러 개 있고 HTTP 요청 오버헤드를 최소화하려고 합니다.
  • 애플리케이션이 오프라인 상태에서 사용자가 데이터를 변경했기 때문에 애플리케이션에서 많은 업데이트와 삭제를 전송하여 로컬 데이터와 서버를 동기화해야 합니다.

참고: 일괄 요청 하나에 호출 수는 1,000개로 제한됩니다. 이보다 많은 호출이 필요하면 여러 개의 일괄 요청을 사용해야 합니다.

참고: 미디어 업로드 객체를 생성할 수 있습니다.

세부정보

BatchRequest 객체를 인스턴스화한 다음 실행하려는 각 요청에 대해 Queue 메서드를 호출하여 일괄 요청을 만듭니다. 각 요청에서 애플리케이션이 해당 요청에 대한 응답을 반환합니다. 콜백 함수의 인수는 다음과 같습니다.

콘텐츠
콘텐츠 응답 또는 요청이 실패한 경우 null입니다.
오류
오류 또는 요청이 성공한 경우 null입니다.
색인
개별 요청의 색인입니다.
메시지
모든 헤더와 콘텐츠가 포함된 전체 HTTP 메시지입니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.
를 통해 개인정보처리방침을 정의할 수 있습니다. 요청을 추가한 후 ExecuteAsync 메서드를 사용하여 요청합니다.

다음 코드 스니펫에서는 두 개의 API 요청이 단일 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();