ส่งคําขอแบบกลุ่ม

การเชื่อมต่อ 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();