इस दस्तावेज़ में, ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाने के लिए इस्तेमाल की जा सकने वाली कुछ तकनीकों के बारे में बताया गया है. कुछ मामलों में, पेश किए गए आइडिया को समझाने के लिए, अन्य एपीआई या सामान्य एपीआई के उदाहरणों का इस्तेमाल किया जाता है. हालांकि, यही सिद्धांत Android Over The Air API पर भी लागू होते हैं.
gzip का इस्तेमाल करके कंप्रेस करना
gzip कंप्रेशन को चालू करना, हर अनुरोध के लिए ज़रूरी बैंडविथ को कम करने का एक आसान और सीधा तरीका है. हालांकि, कंप्रेस किए गए नतीजों को खोलने के लिए ज़्यादा सीपीयू समय की ज़रूरत होती है, लेकिन नेटवर्क की लागत के साथ ट्रेड-ऑफ़ आम तौर पर इसे बहुत फ़ायदेमंद बनाता है.
gzip कोड में बदले गए जवाब पाने के लिए, आपको ये दो काम करने होंगे: Accept-Encoding हेडर सेट करना और अपने उपयोगकर्ता एजेंट में बदलाव करके, उसमें gzip स्ट्रिंग शामिल करना. gzip कंप्रेशन को चालू करने के लिए, सही तरीके से बनाए गए एचटीटीपी हेडर का उदाहरण यहां दिया गया है:
Accept-Encoding: gzip User-Agent: my program (gzip)
कुछ संसाधनों के साथ काम करना
एपीआई कॉल की परफ़ॉर्मेंस को बेहतर बनाने का एक और तरीका यह है कि सिर्फ़ उस डेटा को भेजा और पाया जाए जिसमें आपकी दिलचस्पी हो. इससे आपका ऐप्लिकेशन, गैर-ज़रूरी फ़ील्ड को ट्रांसफ़र, पार्स, और सेव करने से बचता है. इसलिए, यह नेटवर्क, सीपीयू, और मेमोरी जैसे संसाधनों का ज़्यादा बेहतर तरीके से इस्तेमाल कर सकता है.
आंशिक अनुरोध दो तरह के होते हैं:
- कुछ हिस्से का जवाब: ऐसा अनुरोध जिसमें यह तय किया जाता है कि जवाब में कौनसे फ़ील्ड शामिल करने हैं. इसके लिए,
fieldsअनुरोध पैरामीटर का इस्तेमाल करें. - पैच: यह एक अपडेट अनुरोध होता है. इसमें सिर्फ़ वे फ़ील्ड भेजे जाते हैं जिनमें आपको बदलाव करना है. इसके लिए,
PATCHएचटीटीपी वर्ब का इस्तेमाल करें.
आंशिक अनुरोध करने के बारे में ज़्यादा जानकारी, यहां दिए गए सेक्शन में दी गई है.
अधूरे जवाब
डिफ़ॉल्ट रूप से, सर्वर अनुरोधों को प्रोसेस करने के बाद, किसी संसाधन का पूरा डेटा वापस भेजा जाता है. बेहतर परफ़ॉर्मेंस के लिए, सर्वर से सिर्फ़ वे फ़ील्ड भेजने के लिए कहा जा सकता है जिनकी आपको ज़रूरत है. ऐसा न होने पर आपको अधूरा जवाब मिलेगा.
कुछ हिस्से का जवाब पाने का अनुरोध करने के लिए, fields अनुरोध पैरामीटर का इस्तेमाल करके वे फ़ील्ड तय करें जो आपको वापस चाहिए. इस पैरामीटर का इस्तेमाल, ऐसे किसी भी अनुरोध के साथ किया जा सकता है जिससे जवाब का डेटा मिलता है.
ध्यान दें कि fields पैरामीटर का असर सिर्फ़ जवाब के डेटा पर पड़ता है. अगर आपको कोई डेटा भेजना है, तो इस पैरामीटर का उस पर कोई असर नहीं पड़ता. संसाधनों में बदलाव करते समय भेजे जाने वाले डेटा की मात्रा को कम करने के लिए, पैच अनुरोध का इस्तेमाल करें.
पैच (आंशिक अपडेट)
संसाधनों में बदलाव करते समय, गैर-ज़रूरी डेटा भेजने से भी बचा जा सकता है. अगर आपको सिर्फ़ उन फ़ील्ड के लिए अपडेट किया गया डेटा भेजना है जिनमें बदलाव किया जा रहा है, तो HTTP PATCH वर्ब का इस्तेमाल करें. इस दस्तावेज़ में बताए गए पैच से जुड़े सेमेंटिक, पुराने GData के आंशिक अपडेट के मुकाबले अलग (और आसान) हैं.
यहां दिए गए छोटे से उदाहरण में बताया गया है कि पैच का इस्तेमाल करने से, छोटा अपडेट करने के लिए आपको कम डेटा भेजना पड़ता है.
उदाहरण
पैच के जवाब को मैनेज करना
सही पैच अनुरोध को प्रोसेस करने के बाद, एपीआई 200 OK एचटीटीपी रिस्पॉन्स कोड दिखाता है. साथ ही, बदले गए संसाधन का पूरा डेटा भी दिखाता है. अगर एपीआई, ETags का इस्तेमाल करता है, तो पैच अनुरोध को प्रोसेस करने के बाद सर्वर, ETag की वैल्यू अपडेट करता है. ऐसा ही PUT के साथ भी होता है.
पैच अनुरोध से, पूरे संसाधन का प्रतिनिधित्व मिलता है. हालांकि, fields पैरामीटर का इस्तेमाल करके, जवाब में मिलने वाले डेटा की मात्रा को कम किया जा सकता है.
अगर पैच अनुरोध से संसाधन की ऐसी नई स्थिति बनती है जो सिंटैक्टिक या सिमैंटिक तौर पर अमान्य है, तो सर्वर 400 Bad Request या 422 Unprocessable Entity एचटीटीपी स्टेटस कोड दिखाता है. साथ ही, संसाधन की स्थिति में कोई बदलाव नहीं होता. उदाहरण के लिए, अगर आपने किसी ज़रूरी फ़ील्ड के लिए वैल्यू मिटाने की कोशिश की, तो सर्वर एक गड़बड़ी दिखाता है.
PATCH एचटीटीपी वर्ब काम न करने पर, दूसरा नोटेशन
अगर आपका फ़ायरवॉल, एचटीटीपी PATCH अनुरोधों की अनुमति नहीं देता है, तो एचटीटीपी POST अनुरोध करें और ओवरराइड हेडर को PATCH पर सेट करें. ऐसा नीचे दिए गए तरीके से करें:
POST https://www.googleapis.com/... X-HTTP-Method-Override: PATCH ...
पैच और अपडेट के बीच का अंतर
अपडेट करने के अनुरोध के लिए, एचटीटीपी PUT वर्ब का इस्तेमाल करके डेटा भेजते समय, आपको सिर्फ़ वे फ़ील्ड भेजने होते हैं जो ज़रूरी या वैकल्पिक होते हैं. अगर सर्वर की ओर से सेट किए गए फ़ील्ड के लिए वैल्यू भेजी जाती हैं, तो उन्हें अनदेखा कर दिया जाता है. हालांकि, यह आंशिक अपडेट करने का एक और तरीका लग सकता है, लेकिन इस तरीके की कुछ सीमाएं हैं. एचटीटीपी PUT वर्ब का इस्तेमाल करने वाले अपडेट के लिए, ज़रूरी पैरामीटर न देने पर अनुरोध पूरा नहीं होता. साथ ही, वैकल्पिक पैरामीटर न देने पर पहले से सेट किया गया डेटा मिट जाता है.
इसलिए, पैच का इस्तेमाल करना ज़्यादा सुरक्षित होता है. सिर्फ़ उन फ़ील्ड के लिए डेटा दें जिनमें आपको बदलाव करना है. जिन फ़ील्ड के लिए डेटा नहीं दिया जाता है उन्हें साफ़ नहीं किया जाता. इस नियम का सिर्फ़ एक अपवाद है. यह दोहराए जाने वाले एलिमेंट या ऐरे पर लागू होता है: अगर आपने इनमें से किसी को भी शामिल नहीं किया है, तो ये पहले की तरह ही बने रहेंगे. अगर आपने इनमें से किसी को भी शामिल किया है, तो पूरा सेट आपके दिए गए सेट से बदल दिया जाएगा.