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