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

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