การเชื่อมต่อ HTTP แต่ละครั้งที่แอปพลิเคชันสร้างค่าใช้จ่ายในการดำเนินการจำนวนหนึ่ง ไลบรารีนี้รองรับการทำงานแบบกลุ่ม เพื่อให้แอปพลิเคชันของคุณใส่การเรียก API หลายครั้งไว้ในคำขอ HTTP รายการเดียว ตัวอย่างสถานการณ์ที่คุณอาจต้องใช้การรวมกลุ่มมีดังนี้
- คุณมีคําขอเล็กๆ น้อยๆ จํานวนมากและต้องการลดค่าใช้จ่ายในการดำเนินการคําขอ HTTP
- ผู้ใช้ทำการเปลี่ยนแปลงข้อมูลขณะที่แอปพลิเคชันของคุณออฟไลน์อยู่ ดังนั้นแอปพลิเคชันของคุณต้องซิงค์ข้อมูลในเครื่องกับเซิร์ฟเวอร์ ด้วยการส่งอัปเดตและการลบจำนวนมาก
หมายเหตุ: คำขอแบบกลุ่ม 1 รายการจะโทรได้สูงสุด 1,000 ครั้ง หากต้องการโทรมากกว่าจำนวนนั้น ให้ใช้คำขอแบบกลุ่มหลายรายการ
หมายเหตุ: คุณไม่สามารถใช้ การอัปโหลดสื่อ ในคำขอแบบกลุ่ม
รายละเอียด
คุณสร้างคำขอแบบกลุ่มได้โดยการสร้างอินสแตนซ์
BatchRequest
แล้วเรียกเมธอด Queue
สำหรับแต่ละคำขอที่คุณต้องการดำเนินการ
สำหรับคำขอแต่ละรายการ ให้ติดต่อกลับเพื่อเรียกเมื่อแอปพลิเคชันของคุณได้รับ
การตอบกลับคำขอนั้น
อาร์กิวเมนต์ของฟังก์ชัน Callback มีดังนี้
- เนื้อหา
- การตอบกลับเนื้อหา หรือ
null
หากคำขอล้มเหลว - ข้อผิดพลาด
- ข้อผิดพลาด หรือ
null
หากคำขอประสบความสำเร็จ - ดัชนี
- ดัชนีของคำขอแต่ละรายการ
- ข้อความ
- ข้อความ HTTP แบบเต็มที่มีส่วนหัวและเนื้อหาทั้งหมด
ExecuteAsync
เมธอดในการสร้างคำขอ
ในข้อมูลโค้ดต่อไปนี้ คำขอ API 2 รายการจะรวมกันเป็นคำขอ 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();