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

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