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