כל חיבור 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();