बैच अनुरोध भेजें

आपका ऐप्लिकेशन जिस एचटीटीपी कनेक्शन से काम करता है उससे एक तय ज़्यादा रकम खर्च होती है. इस लाइब्रेरी में बैच बनाने की सुविधा काम करती है. इससे आपका ऐप्लिकेशन एक ही एचटीटीपी अनुरोध में कई एपीआई कॉल कर सकता है. उन स्थितियों के उदाहरण जब आपको एक साथ कई अनुरोध भेजने की ज़रूरत पड़ सकती है:

  • आपको कई छोटे-छोटे अनुरोध करने हैं और आपको एचटीटीपी अनुरोध ओवरहेड को कम से कम करना है.
  • किसी उपयोगकर्ता ने उस समय डेटा में बदलाव किए हैं जब आपका ऐप्लिकेशन ऑफ़लाइन था. इसलिए, आपके ऐप्लिकेशन को बहुत सारे अपडेट भेजकर और मिटाकर अपने स्थानीय डेटा को सर्वर के साथ सिंक करना होगा.

ध्यान दें: एक बार में ज़्यादा से ज़्यादा 1,000 कॉल किए जा सकते हैं. अगर आपको इससे ज़्यादा कॉल करने हैं, तो एक साथ कई अनुरोध करें.

ध्यान दें: बैच अनुरोध में, मीडिया अपलोड ऑब्जेक्ट का इस्तेमाल नहीं किया जा सकता.

जानकारी

एक साथ कई अनुरोध करने के लिए, BatchRequest ऑब्जेक्ट को इंस्टैंशिएट किया जाता है. इसके बाद, हर उस अनुरोध के लिए Queue तरीके को कॉल किया जाता है जिसे आपको एक्ज़ीक्यूट करना है. हर अनुरोध के साथ, एक कॉलबैक पास करें, ताकि जब आपके ऐप्लिकेशन को उस अनुरोध का जवाब मिल जाए, तब उसे कॉल किया जा सके. कॉलबैक फ़ंक्शन के आर्ग्युमेंट ये हैं:

वीडियो
कॉन्टेंट का जवाब या अनुरोध पूरा न होने पर null.
गड़बड़ी
गड़बड़ी या अनुरोध सफल होने पर null.
इंडेक्स
हर अनुरोध का इंडेक्स.
ग्राहक का मैसेज
पूरा एचटीटीपी मैसेज, जिसमें उसके सभी हेडर और कॉन्टेंट शामिल है.
अनुरोध जोड़ने के बाद, अनुरोध करने के लिए ExecuteAsync तरीके को कॉल किया जाता है.

नीचे दिए गए कोड स्निपेट में, दो एपीआई अनुरोधों को एक ही एचटीटीपी अनुरोध में बैच किया गया है. साथ ही, हर एपीआई अनुरोध के लिए एक कॉलबैक दिया गया है:

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();