שליחת בקשות בכמות גדולה

כל חיבור HTTP שהאפליקציה שלכם יוצרת גורם לתקורה מסוימת. הספרייה הזו תומכת בקיבוץ באצווה של קריאות כדי לאפשר לאפליקציה לבצע מספר קריאות ל-API בבקשת HTTP אחת. דוגמאות למצבים שבהם כדאי להשתמש בקיבוץ באצווה של קריאות:

  • אתם צריכים לשלוח הרבה בקשות קטנות, ואתם רוצים לצמצם את התקורה של בקשות HTTP.
  • משתמש ביצע שינויים בנתונים בזמן שהאפליקציה לא הייתה מחוברת לאינטרנט, כך שהאפליקציה צריכה לסנכרן את הנתונים המקומיים שלה עם השרת על ידי שליחה של הרבה עדכונים ומחיקות.

הערה: הבקשה באצווה מוגבלת ל-1,000 קריאות. אם צריך לבצע יותר קריאות, תוכלו להשתמש במספר בקשות באצווה.

הערה: לא ניתן להשתמש ב- העלאת מדיה בבקשה באצווה.

פרטים

כדי ליצור בקשות באצווה, BatchRequest ואז קריאה ל-method Queue עבור כל בקשה שרוצים לבצע. בכל בקשה, מעבירים קריאה חוזרת (callback) כדי שתישמע כשהאפליקציה מקבלת את התשובה לבקשה הזו. הארגומנטים של פונקציית הקריאה החוזרת הם:

תוכן
תגובה לתוכן, או null אם הבקשה נכשלה.
error
השגיאה, או null אם הבקשה הצליחה.
index
האינדקס של הבקשה הבודדת.
הודעה
הודעת ה-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();