כל חיבור HTTP שהאפליקציה שלך מייצרת גורם לכמות מסוימת של תקורה. הספרייה הזו תומכת בקיבוץ תגים כדי לאפשר לאפליקציה להעביר מספר קריאות ל-API לבקשת HTTP אחת. דוגמאות למצבים שבהם כדאי להשתמש בקיבוץ:
- עליך לבצע בקשות קטנות רבות, וברצונך לצמצם את תקורת בקשות ה-HTTP.
- משתמש ביצע שינויים בנתונים בזמן שהאפליקציה הייתה במצב אופליין, ולכן האפליקציה צריכה לסנכרן את הנתונים המקומיים שלה עם השרת על ידי שליחת הרבה עדכונים ומחיקה.
הערה: אתם מוגבלים ל-1,000 שיחות בבקשה אחת באצווה. אם צריך לבצע יותר שיחות, אפשר להשתמש במספר בקשות אצווה.
הערה: לא ניתן להשתמש באובייקט העלאת מדיה בבקשות באצווה.
פרטים
אפשר ליצור בקשות אצווה על ידי יצירת אובייקט BatchRequest
וקריאה ל-method Queue
לכל בקשה שרוצים לבצע.
בכל בקשה, מעבירים קריאה חוזרת (callback) שתתבצע קריאה כשהאפליקציה תקבל את התגובה לבקשה.
הארגומנטים של פונקציית הקריאה החוזרת הם:
- ביותר
- תגובת התוכן, או
null
אם הבקשה נכשלה. - error
- השגיאה, או
null
אם הבקשה הצליחה. - index
- האינדקס של הבקשה המסוימת.
- הודעה
- הודעת ה-HTTP המלאה שכוללת את כל הכותרות והתוכן שלה.
ExecuteAsync
כדי לבצע את הבקשות.
בקטע הקוד הבא, שתי בקשות API מקובצות בבקשת HTTP אחת, ולכל בקשת API מתקבל קריאה חוזרת (callback):
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();