बैच अनुरोध

इस दस्तावेज़ में, एपीआई कॉल को एक साथ बैच करने का तरीका बताया गया है. इससे क्लाइंट के बनाए जाने वाले कनेक्शन की संख्या कम हो जाती है. बैचिंग से, नेटवर्क राउंड ट्रिप को कम करके और थ्रूपुट को बढ़ाकर, किसी ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाया जा सकता है.

खास जानकारी

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

हम उपयोगकर्ताओं को एक साथ कई अनुरोध बैच करने का सुझाव देते हैं. यहां कुछ ऐसी स्थितियों के उदाहरण दिए गए हैं जिनमें बैचिंग का इस्तेमाल किया जा सकता है:

  • आपने अभी-अभी एपीआई का इस्तेमाल शुरू किया है और आपको बहुत सारा डेटा अपलोड करना है.
  • आपको कई ऑब्जेक्ट के मेटाडेटा या प्रॉपर्टी को अपडेट करना है. जैसे, फ़ॉर्मैटिंग.
  • आपको कई ऑब्जेक्ट मिटाने हैं.

सीमाएं, अनुमति, और डिपेंडेंसी से जुड़ी बातें

एक साथ कई बदलाव करने की सुविधा का इस्तेमाल करते समय, इन बातों का ध्यान रखें:

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

बैच की जानकारी

बैच अनुरोध में, एक batchUpdate तरीके का कॉल होता है. इसमें कई उप-अनुरोध होते हैं. उदाहरण के लिए, किसी प्रज़ेंटेशन को जोड़ने और फिर उसे फ़ॉर्मैट करने के लिए.

हर अनुरोध को लागू करने से पहले उसकी पुष्टि की जाती है. बैच अपडेट में मौजूद सभी सब-अनुरोध, एक साथ लागू होते हैं. इसका मतलब है कि अगर कोई अनुरोध मान्य नहीं है, तो पूरा अपडेट पूरा नहीं होगा. साथ ही, (संभावित रूप से निर्भर) कोई भी बदलाव लागू नहीं होगा.

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

इस तरीके से, एक से ज़्यादा सब-अनुरोधों के साथ, एक एपीआई बैच अपडेट अनुरोध का इस्तेमाल करके पूरा Google दस्तावेज़ बनाया जा सकता है.

बैच अनुरोध का फ़ॉर्मैट

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

बैच रिस्पॉन्स का फ़ॉर्मैट

बैच अनुरोध के लिए जवाब का फ़ॉर्मैट, अनुरोध के फ़ॉर्मैट जैसा ही होता है. सर्वर के जवाब में, सिंगल रिस्पॉन्स ऑब्जेक्ट का पूरा जवाब होता है.

मुख्य JSON ऑब्जेक्ट की प्रॉपर्टी का नाम replies है. जवाबों को एक ऐरे में दिखाया जाता है. इसमें हर जवाब, अनुरोधों में से किसी एक का होता है. साथ ही, जवाबों का इंडेक्स क्रम वही होता है जो अनुरोधों का होता है. कुछ अनुरोधों के जवाब नहीं दिए गए हैं और उस ऐरे इंडेक्स पर जवाब खाली है.

उदाहरण

यहां दिए गए कोड सैंपल में, Slides API के साथ बैचिंग का इस्तेमाल दिखाया गया है.

अनुरोध

इस उदाहरण बैच अनुरोध में, यह बताया गया है कि:

  • CreateSlideRequest तरीके का इस्तेमाल करके, किसी मौजूदा प्रज़ेंटेशन में 1 के insertionIndex के साथ presentations.pages संसाधन जोड़ो.

  • CreateShapeRequest तरीके का इस्तेमाल करके, नई स्लाइड में TEXT_BOX टाइप का shapeType जोड़ें.

  • InsertTextRequest तरीके का इस्तेमाल करके, नए फ़ील्ड में "Hello World" टेक्स्ट डालें.

{
   "requests":[
      {
         "createSlide":{
            "insertionIndex":1,
            "objectId":"newSlide"
         }
      },
      {
         "createShape":{
            "elementProperties":{
               "pageObjectId":"newSlide",
               "size":{
                  "height":{
                     "magnitude":50,
                     "unit":"PT"
                  },
                  "width":{
                     "magnitude":200,
                     "unit":"PT"
                  }
               }
            },
            "shapeType":"TEXT_BOX",
            "objectId":"newTextBox"
         }
      },
      {
         "insertText":{
            "objectId":"newTextBox",
            "text":"Hello World"
         }
      }
   ]
}

जवाब

इस उदाहरण में बैच रिस्पॉन्स दिखाया गया है. इसमें यह जानकारी दी गई है कि बैच अनुरोध में मौजूद हर उप-अनुरोध को कैसे लागू किया गया. ध्यान दें कि InsertTextRequest तरीके में कोई जवाब नहीं है. इसलिए, [2] पर मौजूद कलेक्शन की इंडेक्स वैल्यू में खाली घुंघराले ब्रैकेट शामिल हैं. बैच अनुरोध में WriteControl प्रॉपर्टी दिखती है. इससे पता चलता है कि लिखने के अनुरोध कैसे पूरे किए गए.

{
   "requiredRevisionId": ID
   "presentationId": "",
   "replies":[
      {
         "createSlide":{
            "objectId":"newSlide"
         }
      },
      {
         "createShape":{
            "objectId":"newTextBox"
         }
      },
      {
         
      }
   ],
   "writeControl":{
      "requiredRevisionId": REVISION_ID
   }
}