इस दस्तावेज़ में, एपीआई कॉल को एक साथ बैच करने का तरीका बताया गया है. इससे क्लाइंट के बनाए जाने वाले कनेक्शन की संख्या कम हो जाती है. बैचिंग से, ऐप्लिकेशन की परफ़ॉर्मेंस बेहतर हो सकती है. ऐसा इसलिए, क्योंकि इससे नेटवर्क राउंड ट्रिप कम हो जाती हैं और थ्रूपुट बढ़ जाता है.
खास जानकारी
आपका क्लाइंट जितने कनेक्शन बनाता है, उससे कुछ हद तक ओवरहेड बढ़ता है. Google Docs API में बैच में अनुरोध भेजने की सुविधा काम करती है. इससे आपका क्लाइंट, एक साथ कई अनुरोध ऑब्जेक्ट भेज सकता है. इनमें से हर ऑब्जेक्ट में, एक तरह के अनुरोध के बारे में बताया जाता है. इन सभी ऑब्जेक्ट को एक ही बैच अनुरोध में शामिल किया जाता है. बैच अनुरोध से परफ़ॉर्मेंस को बेहतर बनाया जा सकता है. इसके लिए, कई उप-अनुरोधों को सर्वर पर एक ही कॉल में शामिल किया जाता है और एक ही जवाब वापस पाया जाता है.
हम उपयोगकर्ताओं को एक साथ कई अनुरोधों को बैच करने का सुझाव देते हैं. यहां कुछ ऐसी स्थितियों के उदाहरण दिए गए हैं जिनमें बैचिंग का इस्तेमाल किया जा सकता है:
- आपने अभी-अभी एपीआई का इस्तेमाल शुरू किया है और आपको बहुत सारा डेटा अपलोड करना है.
- आपको कई ऑब्जेक्ट पर मेटाडेटा या प्रॉपर्टी अपडेट करनी हैं. जैसे, फ़ॉर्मैटिंग.
- आपको कई ऑब्जेक्ट मिटाने हैं.
सीमाएं, पुष्टि, और डिपेंडेंसी से जुड़ी बातें
बैच अपडेट का इस्तेमाल करते समय, इन बातों का ध्यान रखें:
- हर बैच अनुरोध को, जिसमें सभी उप-अनुरोध शामिल हैं, आपके इस्तेमाल करने की सीमा में एक एपीआई अनुरोध के तौर पर गिना जाता है.
- बैच अनुरोध की पुष्टि एक बार की जाती है. पुष्टि करने की यह एक प्रक्रिया, अनुरोध में मौजूद बैच अपडेट के सभी ऑब्जेक्ट पर लागू होती है.
- सर्वर, सब-अनुरोधों को उसी क्रम में प्रोसेस करता है जिस क्रम में वे बैच अनुरोध में दिखते हैं. बाद के उप-अनुरोध, पहले के उप-अनुरोधों के दौरान की गई कार्रवाइयों पर निर्भर हो सकते हैं. उदाहरण के लिए, एक ही बैच अनुरोध में उपयोगकर्ता, किसी मौजूदा दस्तावेज़ में टेक्स्ट डाल सकते हैं और फिर उसे स्टाइल कर सकते हैं.
बैच की जानकारी
बैच में भेजे जाने वाले अनुरोध में, एक batchUpdate तरीके का कॉल होता है. इसमें कई उप-अनुरोध होते हैं. उदाहरण के लिए, किसी दस्तावेज़ को जोड़ना और फिर उसे फ़ॉर्मैट करना.
हर अनुरोध को लागू करने से पहले उसकी पुष्टि की जाती है. बैच अपडेट में मौजूद सभी सब-अनुरोध, एक साथ लागू होते हैं. इसका मतलब है कि अगर कोई अनुरोध मान्य नहीं है, तो पूरा अपडेट पूरा नहीं होगा. साथ ही, (संभावित रूप से निर्भर) कोई भी बदलाव लागू नहीं होगा.
कुछ अनुरोधों के जवाब में, लागू किए गए अनुरोधों के बारे में जानकारी दी जाती है. उदाहरण के लिए, ऑब्जेक्ट जोड़ने के लिए किए गए बैच अपडेट के सभी अनुरोधों के जवाब मिलते हैं. इससे, आपको जोड़े गए नए ऑब्जेक्ट का मेटाडेटा ऐक्सेस करने में मदद मिलती है. जैसे, आईडी या टाइटल.
इस तरीके से, एक से ज़्यादा सब-रिक्वेस्ट के साथ एक एपीआई बैच अपडेट अनुरोध का इस्तेमाल करके, पूरा Google दस्तावेज़ बनाया जा सकता है.
बैच अनुरोध का फ़ॉर्मैट
अनुरोध एक JSON अनुरोध होता है. इसमें कई नेस्ट किए गए उप-अनुरोध शामिल होते हैं. साथ ही, इसमें एक ज़रूरी प्रॉपर्टी होती है: requests. अनुरोधों को अलग-अलग अनुरोधों के ऐरे में बनाया जाता है. हर अनुरोध में, JSON का इस्तेमाल किया जाता है. इससे अनुरोध ऑब्जेक्ट को दिखाया जाता है और उसकी प्रॉपर्टी शामिल की जाती हैं.
बैच रिस्पॉन्स का फ़ॉर्मैट
बैच अनुरोध के लिए जवाब का फ़ॉर्मैट, अनुरोध के फ़ॉर्मैट जैसा ही होता है. सर्वर के जवाब में, एक जवाब वाले ऑब्जेक्ट का पूरा जवाब शामिल होता है.
मुख्य JSON ऑब्जेक्ट की प्रॉपर्टी का नाम replies है. जवाबों को एक ऐरे में दिखाया जाता है. हर जवाब, अनुरोधों में से किसी एक का होता है. साथ ही, जवाबों का इंडेक्स क्रम वही होता है जो अनुरोधों का होता है. कुछ अनुरोधों के जवाब नहीं दिए गए हैं और उस ऐरे इंडेक्स पर जवाब खाली है.
उदाहरण
यहां दिए गए कोड सैंपल में, Docs API के साथ बैचिंग का इस्तेमाल दिखाया गया है.
अनुरोध
इस उदाहरण बैच अनुरोध में, यह तरीका बताया गया है:
InsertTextRequestका इस्तेमाल करके, मौजूदा दस्तावेज़ की शुरुआत में "Hello World" टेक्स्ट डालें. साथ ही, इंडेक्सlocationको1पर सेट करें.UpdateTextStyleRequestका इस्तेमाल करके, "नमस्ते" शब्द को अपडेट करो.startIndexऔरendIndex, सेगमेंट में फ़ॉर्मैट किए गए टेक्स्ट केrangeको तय करते हैं.textStyleका इस्तेमाल करके, सिर्फ़ "Hello" शब्द के लिए फ़ॉन्ट स्टाइल को बोल्ड और रंग को नीला पर सेट करो.WriteControlफ़ील्ड का इस्तेमाल करके, यह कंट्रोल किया जा सकता है कि लिखने के अनुरोध कैसे पूरे किए जाएं. ज़्यादा जानकारी के लिए, WriteControl की मदद से, स्थिति को एक जैसा बनाए रखना लेख पढ़ें.
{ "requests":[ { "insertText":{ "location":{ "index":1, "tabId":TAB_ID }, "text":"Hello World" } }, { "updateTextStyle":{ "range":{ "startIndex":1, "endIndex":6 }, "textStyle":{ "bold":true, "foregroundColor":{ "color":{ "rgbColor":{ "blue":1 } } } }, "fields":"bold,foreground_color" } } ], "writeControl": { "requiredRevisionId": "REQUIRED_REVISION_ID" } }
TAB_ID और REQUIRED_REVISION_ID को उस दस्तावेज़ के टैब आईडी और बदलाव आईडी से बदलें जिस पर लिखने का अनुरोध किया गया है.
जवाब
इस उदाहरण में बैच रिस्पॉन्स दिखाया गया है. इसमें यह जानकारी दी गई है कि बैच अनुरोध में मौजूद हर उप-अनुरोध को कैसे लागू किया गया. InsertTextRequest या UpdateTextStyleRequest में कोई जवाब नहीं है. इसलिए, ऐरे के इंडेक्स [0] और [1] की वैल्यू में खाली घुंघराले ब्रैकेट शामिल हैं. एक साथ भेजे गए अनुरोधों में WriteControl ऑब्जेक्ट दिखता है. इससे पता चलता है कि अनुरोधों को कैसे पूरा किया गया.
{ "replies":[ {}, {} ], "writeControl":{ "requiredRevisionId":`REQUIRED_REVISION_ID` }, "documentId":`DOCUMENT_ID` }