इस दस्तावेज़ में, एपीआई कॉल को एक साथ बैच करने का तरीका बताया गया है. इससे, आपके क्लाइंट को बनाए जाने वाले कनेक्शन की संख्या कम हो जाती है. एक साथ कई अनुरोध करने से, नेटवर्क के राउंड ट्रिप कम हो जाते हैं और थ्रूपुट बढ़ जाता है. इससे ऐप्लिकेशन की परफ़ॉर्मेंस बेहतर होती है.
खास जानकारी
आपके क्लाइंट के हर कनेक्शन से कुछ ओवरहेड होता है. Google Slides API, एक साथ कई अनुरोध करने की सुविधा देता है. इससे आपके क्लाइंट को एक ही बैच अनुरोध में कई अनुरोध ऑब्जेक्ट डालने की सुविधा मिलती है. हर ऑब्जेक्ट, एक तरह के अनुरोध के बारे में बताता है. बैच अनुरोध से परफ़ॉर्मेंस को बेहतर बनाया जा सकता है. इसके लिए, कई सब-अनुरोधों को सर्वर पर एक ही कॉल में जोड़कर, एक ही जवाब वापस पाया जाता है.
हमारा सुझाव है कि उपयोगकर्ता एक साथ कई अनुरोध करें. यहां कुछ उदाहरण दिए गए हैं, जिनमें एक साथ कई टास्क करने की सुविधा का इस्तेमाल किया जा सकता है:
- आपने हाल ही में एपीआई का इस्तेमाल शुरू किया है और आपके पास अपलोड करने के लिए काफ़ी डेटा है.
- आपको कई ऑब्जेक्ट पर मेटाडेटा या प्रॉपर्टी अपडेट करनी हैं, जैसे कि फ़ॉर्मैटिंग.
- आपको कई ऑब्जेक्ट मिटाने हैं.
सीमाएं, अनुमति, और डिपेंडेंसी से जुड़ी बातें
एक साथ कई आइटम अपडेट करने की सुविधा का इस्तेमाल करते समय, इन बातों का ध्यान रखें:
- हर बैच अनुरोध, जिसमें सभी सब-अनुरोध शामिल हैं, को इस्तेमाल की सीमा के लिए एक एपीआई अनुरोध के तौर पर गिना जाता है.
- एक साथ कई अनुरोध करने पर, उनकी पुष्टि एक बार की जाती है. पुष्टि करने की यह प्रोसेस, अनुरोध में मौजूद सभी बैच अपडेट ऑब्जेक्ट पर लागू होती है.
- सर्वर, सब-रिक्वेस्ट को उसी क्रम में प्रोसेस करता है जिस क्रम में वे बैच रिक्वेस्ट में दिखते हैं. बाद के सब-रिक्वेस्ट, पहले के सब-रिक्वेस्ट के दौरान की गई कार्रवाइयों पर निर्भर हो सकते हैं. उदाहरण के लिए, एक ही बैच अनुरोध में, उपयोगकर्ता किसी मौजूदा दस्तावेज़ में टेक्स्ट डाल सकते हैं और फिर उसे स्टाइल कर सकते हैं.
बैच की जानकारी
बैच में भेजे जाने वाले अनुरोध में, एक batchUpdate
तरीका कॉल होता है. इसमें एक से ज़्यादा सब-अनुरोध होते हैं. उदाहरण के लिए, प्रज़ेंटेशन जोड़ने और फिर उसे फ़ॉर्मैट करने के लिए.
लागू करने से पहले, हर अनुरोध की पुष्टि की जाती है. एक साथ कई बदलाव करने के अनुरोध में मौजूद सभी सब-रिक्वेज़, एक साथ लागू किए जाते हैं. इसका मतलब है कि अगर कोई अनुरोध अमान्य है, तो पूरे अपडेट को लागू नहीं किया जा सकता. साथ ही, कोई भी बदलाव लागू नहीं किया जाता.
कुछ अनुरोधों के जवाब में, लागू किए गए अनुरोधों की जानकारी दी जाती है. उदाहरण के लिए, ऑब्जेक्ट जोड़ने के लिए, बैच में अपडेट करने के सभी अनुरोधों के जवाब मिलते हैं, ताकि आप नए ऑब्जेक्ट का मेटाडेटा ऐक्सेस कर सकें. जैसे, आईडी या टाइटल.
इस तरीके से, एक से ज़्यादा सब-रिक्वेस्ट वाले एक एपीआई के ज़रिए, बैच अपडेट करने के अनुरोध का इस्तेमाल करके, पूरा Google दस्तावेज़ बनाया जा सकता है.
एक साथ कई अनुरोध करने का फ़ॉर्मैट
अनुरोध, एक ऐसा JSON अनुरोध होता है जिसमें कई नेस्ट किए गए सब-अनुरोध होते हैं. साथ ही, इसमें एक ज़रूरी प्रॉपर्टी होती है: requests
. ये अनुरोध, अलग-अलग अनुरोधों के कलेक्शन में बनाए जाते हैं. हर अनुरोध, अनुरोध ऑब्जेक्ट को दिखाने और उसकी प्रॉपर्टी को शामिल करने के लिए,
JSON का इस्तेमाल करता है.
एक साथ कई क्वेरी के जवाब का फ़ॉर्मैट
एक साथ कई अनुरोध करने पर, जवाब का फ़ॉर्मैट, अनुरोध के फ़ॉर्मैट जैसा ही होता है. सर्वर के रिस्पॉन्स में, रिस्पॉन्स ऑब्जेक्ट का पूरा जवाब होता है.
मुख्य JSON ऑब्जेक्ट की प्रॉपर्टी का नाम replies
है. जवाबों को एक कलेक्शन में दिखाया जाता है. इसमें हर अनुरोध का जवाब, उस अनुरोध के इंडेक्स क्रम में होता है. कुछ अनुरोधों के लिए,
जवाब नहीं हैं और उस ऐरे इंडेक्स में जवाब खाली है.
उदाहरण
नीचे दिए गए कोड सैंपल में, Slides API के साथ एक साथ कई फ़ाइलों को अपलोड करने का तरीका बताया गया है.
अनुरोध
एक साथ कई अनुरोध करने के इस उदाहरण में, इन कामों का तरीका बताया गया है:
CreateSlideRequest
तरीका इस्तेमाल करके, किसी मौजूदा प्रज़ेंटेशन में1
काinsertionIndex
वाला संसाधन जोड़ें.presentations.pages
CreateShapeRequest
के तरीके का इस्तेमाल करके, नई स्लाइड मेंTEXT_BOX
टाइप काshapeType
जोड़ें.InsertTextRequest
तरीका इस्तेमाल करके, नए फ़ील्ड में "नमस्ते दुनिया" टेक्स्ट डालें.
{ "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 } }