परिचय
यह दस्तावेज़ उन डेवलपर के लिए है जो YouTube के साथ इंटरैक्ट करने वाले ऐप्लिकेशन बनाना चाहते हैं. इसमें YouTube और एपीआई के बुनियादी सिद्धांतों के बारे में बताया गया है. इसमें, एपीआई के साथ काम करने वाले अलग-अलग फ़ंक्शन की खास जानकारी भी दी गई है.
शुरू करने से पहले
-
Google Cloud Console को ऐक्सेस करने, एपीआई पासकोड का अनुरोध करने, और अपना ऐप्लिकेशन रजिस्टर करने के लिए, आपके पास Google खाता होना चाहिए.
-
Google Developers Console में एक प्रोजेक्ट बनाएं और अनुमति के क्रेडेंशियल पाएं, ताकि आपका ऐप्लिकेशन एपीआई अनुरोध सबमिट कर सके.
-
प्रोजेक्ट बनाने के बाद, पक्का करें कि YouTube Data API उन सेवाओं में से एक हो जिन्हें इस्तेमाल करने के लिए आपका ऐप्लिकेशन रजिस्टर किया गया है:
- Cloud Console पर जाएं और वह प्रोजेक्ट चुनें जिसे आपने अभी रजिस्टर किया है.
- चालू किए गए एपीआई पेज पर जाएं. पक्का करें कि YouTube Data API, चालू किए गए एपीआई की सूची में शामिल हो. अगर ऐसा नहीं है, तो एपीआई लाइब्रेरी खोलें और एपीआई को चालू करें.
-
अगर आपका ऐप्लिकेशन, एपीआई के ऐसे तरीकों का इस्तेमाल करेगा जिनके लिए उपयोगकर्ता की अनुमति ज़रूरी है, तो OAuth 2.0 की अनुमति देने की सुविधा को लागू करने का तरीका जानने के लिए, पुष्टि करने की गाइड पढ़ें.
-
एपीआई को आसानी से लागू करने के लिए, कोई क्लाइंट लाइब्रेरी चुनें.
-
JSON (JavaScript ऑब्जेक्ट नोटेशन) डेटा फ़ॉर्मैट के मुख्य सिद्धांतों के बारे में जानें. JSON एक सामान्य डेटा फ़ॉर्मैट है. यह किसी भी भाषा पर निर्भर नहीं करता. यह किसी भी डेटा स्ट्रक्चर को टेक्स्ट के तौर पर दिखाता है. ज़्यादा जानकारी के लिए, json.org पर जाएं.
संसाधन और संसाधन के टाइप
संसाधन, यूनीक आइडेंटिफ़ायर वाली एक डेटा इकाई होती है. नीचे दी गई टेबल में, अलग-अलग तरह के उन संसाधनों के बारे में बताया गया है जिनसे एपीआई का इस्तेमाल करके इंटरैक्ट किया जा सकता है.
| संसाधन | |
|---|---|
activity |
इसमें YouTube साइट पर किसी उपयोगकर्ता की ओर से की गई कार्रवाई की जानकारी होती है. गतिविधि फ़ीड में, उपयोगकर्ता की इन कार्रवाइयों की जानकारी दी जाती है: किसी वीडियो को रेटिंग देना, वीडियो शेयर करना, वीडियो को पसंदीदा के तौर पर मार्क करना, और चैनल बुलेटिन पोस्ट करना. इनके अलावा, और भी कार्रवाइयों की जानकारी दी जाती है. |
channel |
इसमें किसी YouTube चैनल की जानकारी शामिल होती है. |
channelBanner |
यह उस यूआरएल की पहचान करता है जिसका इस्तेमाल, अपलोड की गई नई इमेज को किसी चैनल की बैनर इमेज के तौर पर सेट करने के लिए किया जाता है. |
channelSection |
इसमें उन वीडियो के सेट की जानकारी होती है जिन्हें किसी चैनल ने दिखाने के लिए चुना है. उदाहरण के लिए, किसी सेक्शन में चैनल के हाल ही में अपलोड किए गए वीडियो, सबसे लोकप्रिय वीडियो या एक या उससे ज़्यादा प्लेलिस्ट के वीडियो दिखाए जा सकते हैं. |
guideCategory |
यह कुकी, YouTube पर मौजूद चैनलों को उनकी कैटगरी के हिसाब से पहचानती है. यह कैटगरी, चैनल के कॉन्टेंट या लोकप्रियता जैसे अन्य इंडिकेटर के आधार पर तय की जाती है. गाइड की कैटगरी का मकसद, चैनलों को इस तरह से व्यवस्थित करना है कि YouTube के उपयोगकर्ताओं को अपनी पसंद का कॉन्टेंट आसानी से मिल सके. चैनलों को एक या उससे ज़्यादा गाइड कैटगरी से जोड़ा जा सकता है. हालांकि, इस बात की कोई गारंटी नहीं है कि वे किसी गाइड कैटगरी में शामिल होंगे. |
i18nLanguage |
यह कुकी, ऐप्लिकेशन की उस भाषा की पहचान करती है जिसे YouTube वेबसाइट पर इस्तेमाल किया जा सकता है. ऐप्लिकेशन की भाषा को यूज़र इंटरफ़ेस (यूआई) की भाषा भी कहा जा सकता है. |
i18nRegion |
इससे उस भौगोलिक इलाके की पहचान की जाती है जिसे YouTube उपयोगकर्ता, कॉन्टेंट के लिए पसंदीदा इलाके के तौर पर चुन सकता है. कॉन्टेंट के क्षेत्र को कॉन्टेंट की भाषा भी कहा जा सकता है. |
playlist |
यह किसी एक YouTube प्लेलिस्ट को दिखाता है. प्लेलिस्ट, वीडियो का एक कलेक्शन होता है. इसमें मौजूद वीडियो को क्रम से देखा जा सकता है और अन्य लोगों के साथ शेयर किया जा सकता है. |
playlistItem |
यह किसी ऐसे संसाधन की पहचान करता है जो किसी प्लेलिस्ट का हिस्सा है. जैसे, कोई वीडियो. playlistItem संसाधन में ऐसी जानकारी भी होती है जिससे पता चलता है कि प्लेलिस्ट में शामिल संसाधन का इस्तेमाल कैसे किया गया है. |
search result |
इसमें YouTube वीडियो, चैनल या प्लेलिस्ट के बारे में जानकारी होती है. यह जानकारी, एपीआई अनुरोध में दिए गए खोज के पैरामीटर से मेल खाती है. खोज के नतीजे में, वीडियो जैसे किसी ऐसे संसाधन का लिंक होता है जिसे अच्छी तरह से पहचाना जा सकता है. हालांकि, इसमें अपना कोई स्थायी डेटा नहीं होता. |
subscription |
इसमें YouTube उपयोगकर्ता की सदस्यता के बारे में जानकारी होती है. सदस्यता लेने पर, उपयोगकर्ता को चैनल पर नए वीडियो जोड़े जाने की सूचना मिलती है. इसके अलावा, जब कोई दूसरा उपयोगकर्ता YouTube पर कोई कार्रवाई करता है, तब भी सूचना मिलती है. जैसे, वीडियो अपलोड करना, वीडियो को रेटिंग देना या वीडियो पर टिप्पणी करना. |
thumbnail |
इससे किसी संसाधन से जुड़ी थंबनेल इमेज की पहचान की जाती है. |
video |
यह किसी एक YouTube वीडियो को दिखाता है. |
videoCategory |
इससे उस कैटगरी की पहचान की जाती है जिससे अपलोड किए गए वीडियो जुड़े हैं या जुड़े हो सकते हैं. |
watermark |
यह किसी खास चैनल के वीडियो के प्लेबैक के दौरान दिखने वाली इमेज की पहचान करता है. चैनल का मालिक, टारगेट चैनल भी तय कर सकता है. इमेज को इस चैनल से लिंक किया जाता है. साथ ही, वह टाइमिंग की जानकारी भी तय कर सकता है. इससे यह तय होता है कि वीडियो चलाने के दौरान वॉटरमार्क कब दिखेगा और कितनी देर तक दिखेगा. |
ध्यान दें कि कई मामलों में, किसी संसाधन में अन्य संसाधनों के रेफ़रंस शामिल होते हैं. उदाहरण के लिए, playlistItem संसाधन की snippet.resourceId.videoId प्रॉपर्टी, किसी वीडियो संसाधन की पहचान करती है. इस वीडियो संसाधन में, वीडियो के बारे में पूरी जानकारी होती है. एक और उदाहरण के तौर पर, खोज के नतीजे में videoId, playlistId या channelId प्रॉपर्टी शामिल होती है. इससे किसी खास वीडियो, प्लेलिस्ट या चैनल के संसाधन की पहचान की जाती है.
इन कार्रवाइयों के लिए यह सुविधा उपलब्ध है
यहां दी गई टेबल में, एपीआई के साथ काम करने वाले सबसे सामान्य तरीके दिखाए गए हैं. कुछ संसाधन, अन्य तरीकों के साथ भी काम करते हैं. ये तरीके, उन संसाधनों के लिए ज़्यादा खास फ़ंक्शन उपलब्ध कराते हैं. उदाहरण के लिए, videos.rate तरीका, उपयोगकर्ता रेटिंग को किसी वीडियो से जोड़ता है. वहीं, thumbnails.set तरीका, YouTube पर वीडियो की थंबनेल इमेज अपलोड करता है और उसे किसी वीडियो से जोड़ता है.
| कार्रवाइयां | |
|---|---|
list |
यह शून्य या उससे ज़्यादा संसाधनों की सूची (GET) को वापस लाता है. |
insert |
नया संसाधन बनाता (POST) है. |
update |
यह आपके अनुरोध में मौजूद डेटा को दिखाने के लिए, किसी मौजूदा संसाधन में बदलाव (PUT) करता है. |
delete |
किसी खास संसाधन को हटाता है (DELETE). |
फ़िलहाल, एपीआई में ऐसे तरीके उपलब्ध हैं जिनसे इस्तेमाल किए जा सकने वाले हर तरह के संसाधन की सूची बनाई जा सकती है. साथ ही, इसमें कई संसाधनों के लिए, डेटा में बदलाव करने की सुविधा भी उपलब्ध है.
नीचे दी गई टेबल में, अलग-अलग तरह के संसाधनों के लिए इस्तेमाल किए जा सकने वाले ऑपरेशन के बारे में बताया गया है. संसाधनों को डालने, अपडेट करने या मिटाने वाले ऑपरेशन के लिए, हमेशा उपयोगकर्ता की अनुमति की ज़रूरत होती है. कुछ मामलों में, list तरीके, अनुमति वाले और बिना अनुमति वाले, दोनों तरह के अनुरोधों के साथ काम करते हैं. बिना अनुमति वाले अनुरोधों से सिर्फ़ सार्वजनिक डेटा वापस पाया जा सकता है. वहीं, अनुमति वाले अनुरोधों से, पुष्टि किए गए मौजूदा उपयोगकर्ता की निजी जानकारी भी वापस पाई जा सकती है.
| इन कार्रवाइयों के लिए यह सुविधा उपलब्ध है | ||||
|---|---|---|---|---|
| list | insert | update | delete | |
activity |
||||
caption |
||||
channel |
||||
channelBanner |
||||
channelSection |
||||
comment |
||||
commentThread |
||||
guideCategory |
||||
i18nLanguage |
||||
i18nRegion |
||||
playlist |
||||
playlistItem |
||||
search result |
||||
subscription |
||||
thumbnail |
||||
video |
||||
videoCategory |
||||
watermark |
||||
इस्तेमाल किया गया कोटा
YouTube Data API, कोटे का इस्तेमाल करता है. इससे यह पक्का किया जाता है कि डेवलपर, सेवा का इस्तेमाल तय किए गए तरीके से करें. साथ ही, ऐसे ऐप्लिकेशन न बनाएं जो सेवा की क्वालिटी को गलत तरीके से कम करते हों या दूसरों के लिए ऐक्सेस को सीमित करते हों. सभी एपीआई अनुरोधों के लिए, कम से कम एक पॉइंट का कोटा खर्च होता है. इनमें अमान्य अनुरोध भी शामिल हैं. API Console में जाकर, अपने ऐप्लिकेशन के लिए उपलब्ध कोटा देखा जा सकता है.
YouTube Data API का इस्तेमाल करने वाले प्रोजेक्ट के लिए, डिफ़ॉल्ट तौर पर हर दिन 100 search.list कॉल, 100 videos.insert कॉल, और अन्य सभी एंडपॉइंट के लिए कुल 10,000 यूनिट का कोटा तय किया जाता है. डिफ़ॉल्ट कोटा, जिसमें बदलाव हो सकता है. इससे हमें कोटा के बंटवारे को ऑप्टिमाइज़ करने और अपने इन्फ़्रास्ट्रक्चर को इस तरह से बढ़ाने में मदद मिलती है जो हमारे एपीआई उपयोगकर्ताओं के लिए ज़्यादा काम का हो. API Console में कोटा पेज पर जाकर, कोटा के इस्तेमाल की जानकारी देखी जा सकती है.
ध्यान दें: अगर कोटे की सीमा पूरी हो जाती है, तो YouTube API की सेवाओं के लिए, कोटा बढ़ाने का अनुरोध फ़ॉर्म भरकर, अतिरिक्त कोटे का अनुरोध किया जा सकता है.
इस्तेमाल किए गए कोटे का हिसाब लगाना
Google, हर अनुरोध के लिए कुछ डेटा पॉइंट असाइन करके, आपके कोटे के इस्तेमाल का हिसाब लगाता है. अलग-अलग तरह के ऑपरेशन के लिए, कोटा की लागत अलग-अलग होती है. उदाहरण के लिए:
- पढ़ने की ऐसी कार्रवाई जिसमें संसाधनों (चैनल, वीडियो, प्लेलिस्ट) की सूची वापस मिलती है, आम तौर पर उसकी लागत एक यूनिट होती है.
- किसी संसाधन को बनाने, अपडेट करने या मिटाने वाले राइट ऑपरेशन के लिए, आम तौर पर
50यूनिट खर्च होती हैं. - सर्च क्वेरी के लिए
1यूनिट खर्च होती है. - वीडियो अपलोड करने पर,
1यूनिट खर्च होती है.
एपीआई अनुरोधों के लिए कोटा की लागत टेबल में, हर एपीआई तरीके के लिए कोटा की लागत दिखती है. यहां दिए गए नियमों को ध्यान में रखते हुए, यह अनुमान लगाया जा सकता है कि आपका ऐप्लिकेशन हर दिन कितने अनुरोध भेज सकता है. इससे, आपके कोटे का इस्तेमाल नहीं होगा.
आंशिक संसाधन
एपीआई, संसाधनों के कुछ हिस्से को वापस पाने की अनुमति देता है. साथ ही, इसकी ज़रूरत भी होती है, ताकि ऐप्लिकेशन गैर-ज़रूरी डेटा को ट्रांसफ़र, पार्स, और सेव करने से बच सकें. इस तरीके से यह भी पक्का किया जाता है कि एपीआई, नेटवर्क, CPU, और मेमोरी के संसाधनों का ज़्यादा बेहतर तरीके से इस्तेमाल करे.
एपीआई, अनुरोध के दो पैरामीटर के साथ काम करता है. इनके बारे में यहां बताया गया है. इनकी मदद से, उन रिसॉर्स प्रॉपर्टी की पहचान की जा सकती है जिन्हें एपीआई से मिली जानकारी में शामिल किया जाना चाहिए.
partपैरामीटर, प्रॉपर्टी के उन ग्रुप की पहचान करता है जिन्हें किसी संसाधन के लिए दिखाया जाना चाहिए.fieldsपैरामीटर, एपीआई से मिली जानकारी को फ़िल्टर करता है. इससे, अनुरोध किए गए संसाधन के हिस्सों में सिर्फ़ खास प्रॉपर्टी दिखती हैं.
part पैरामीटर इस्तेमाल करने का तरीका
part पैरामीटर, एपीआई के ऐसे हर अनुरोध के लिए ज़रूरी है जो किसी संसाधन को वापस लाता है या दिखाता है. इस पैरामीटर से, एक या उससे ज़्यादा टॉप-लेवल (नॉन-नेस्टेड) संसाधन प्रॉपर्टी की पहचान होती है. इन्हें एपीआई से मिली जानकारी में शामिल किया जाना चाहिए. उदाहरण के लिए, video संसाधन में ये चीज़ें शामिल होती हैं:
snippetcontentDetailsfileDetailsplayerprocessingDetailsrecordingDetailsstatisticsstatussuggestionstopicDetails
ये सभी हिस्से ऐसे ऑब्जेक्ट हैं जिनमें नेस्ट की गई प्रॉपर्टी होती हैं. इन ऑब्जेक्ट को मेटाडेटा फ़ील्ड के ग्रुप के तौर पर देखा जा सकता है. एपीआई सर्वर इन ग्रुप को वापस पा सकता है या नहीं. इसलिए, part पैरामीटर के लिए, आपको उन संसाधन कॉम्पोनेंट को चुनना होगा जिनका इस्तेमाल आपका ऐप्लिकेशन करता है. इस शर्त को पूरा करने के दो मुख्य फ़ायदे हैं:
- इससे एपीआई सर्वर को ऐसे मेटाडेटा फ़ील्ड को वापस पाने में समय नहीं लगता जिनका इस्तेमाल आपका ऐप्लिकेशन नहीं करता. इससे लेटेन्सी कम हो जाती है.
- यह बैंडविड्थ के इस्तेमाल को कम करता है. इसके लिए, यह उस गै़र-ज़रूरी डेटा की मात्रा को कम (या खत्म) करता है जिसे आपका ऐप्लिकेशन वापस पा सकता है.
समय के साथ, जैसे-जैसे रिसॉर्स में ज़्यादा पार्ट जोड़े जाएंगे, वैसे-वैसे ये फ़ायदे बढ़ते जाएंगे. ऐसा इसलिए, क्योंकि आपका ऐप्लिकेशन उन नई प्रॉपर्टी के लिए अनुरोध नहीं करेगा जो काम नहीं करतीं.
fields पैरामीटर इस्तेमाल करने का तरीका
fields पैरामीटर, एपीआई से मिली जानकारी को फ़िल्टर करता है. इसमें सिर्फ़ वे संसाधन शामिल होते हैं जिनकी पहचान part पैरामीटर वैल्यू में की गई है. इससे जवाब में सिर्फ़ फ़ील्ड का एक खास सेट शामिल होता है. fields पैरामीटर की मदद से, एपीआई से मिली जानकारी से नेस्ट की गई प्रॉपर्टी हटाई जा सकती हैं. इससे बैंडविथ का इस्तेमाल और कम हो जाता है. (part पैरामीटर का इस्तेमाल, किसी रिस्पॉन्स से नेस्ट की गई प्रॉपर्टी को फ़िल्टर करने के लिए नहीं किया जा सकता.)
यहां दिए गए नियमों में, fields पैरामीटर वैल्यू के लिए इस्तेमाल किए जा सकने वाले सिंटैक्स के बारे में बताया गया है. यह सिंटैक्स, XPath सिंटैक्स पर आधारित होता है:
- एक से ज़्यादा फ़ील्ड चुनने के लिए, कॉमा लगाकर अलग की गई लिस्ट (
fields=a,b) का इस्तेमाल करें. - सभी फ़ील्ड की पहचान करने के लिए, वाइल्डकार्ड के तौर पर स्टार के निशान (
fields=*) का इस्तेमाल करें. - एपीआई से मिली जानकारी में शामिल की जाने वाली नेस्ट की गई प्रॉपर्टी के ग्रुप की जानकारी देने के लिए, पैरंटheses (
fields=a(b,c)) का इस्तेमाल करें. - नेस्ट की गई प्रॉपर्टी की पहचान करने के लिए, फ़ॉरवर्ड स्लैश (
fields=a/b) का इस्तेमाल करें.
आम तौर पर, इन नियमों की मदद से, एक ही एपीआई से मिली जानकारी पाने के लिए, कई अलग-अलग fields पैरामीटर वैल्यू का इस्तेमाल किया जा सकता है. उदाहरण के लिए, अगर आपको प्लेलिस्ट में मौजूद हर आइटम का आईडी, टाइटल, और पोज़िशन की जानकारी चाहिए, तो इनमें से किसी भी वैल्यू का इस्तेमाल किया जा सकता है:
fields=items/id,playlistItems/snippet/title,playlistItems/snippet/positionfields=items(id,snippet/title,snippet/position)fields=items(id,snippet(title,position))
ध्यान दें: पूरी क्वेरी पैरामीटर वैल्यू की तरह, fields पैरामीटर वैल्यू को भी कोड में बदलना ज़रूरी है. इस दस्तावेज़ में दिए गए उदाहरणों में कोड में बदलने के तरीके को शामिल नहीं किया गया है, ताकि उन्हें आसानी से पढ़ा जा सके.
अधूरे अनुरोधों के सैंपल
यहां दिए गए उदाहरणों से पता चलता है कि part और fields पैरामीटर का इस्तेमाल करके, यह कैसे पक्का किया जा सकता है कि एपीआई से मिले जवाबों में सिर्फ़ वह डेटा शामिल हो जिसका इस्तेमाल आपका ऐप्लिकेशन करता है:
- पहले उदाहरण में, एक वीडियो रिसॉर्स दिखाया गया है. इसमें चार हिस्सों के साथ-साथ,
kindऔरetagप्रॉपर्टी शामिल हैं. - दूसरे उदाहरण में, एक वीडियो रिसॉर्स दिखाया गया है. इसमें दो हिस्सों के साथ-साथ,
kindऔरetagप्रॉपर्टी भी शामिल हैं. - तीसरे उदाहरण में, एक ऐसा वीडियो संसाधन दिखाया गया है जिसमें दो हिस्से शामिल हैं. हालांकि, इसमें
kindऔरetagप्रॉपर्टी शामिल नहीं हैं. - चौथे उदाहरण में, एक वीडियो संसाधन दिखाया गया है. इसमें दो हिस्से शामिल हैं, लेकिन
kindऔरetagके साथ-साथ संसाधन केsnippetऑब्जेक्ट में मौजूद कुछ नेस्ट की गई प्रॉपर्टी शामिल नहीं हैं.
URL: https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY
&part=snippet,contentDetails,statistics,status Description: This example retrieves avideoresource and identifies several resource parts that should be included in the API response. API response:{ "kind": "youtube#videoListResponse", "etag": "\"UCBpFjp2h75_b92t44sqraUcyu0/sDAlsG9NGKfr6v5AlPZKSEZdtqA\"", "videos": [ { "id": "7lCDEYXw3mM", "kind": "youtube#video", "etag": "\"UCBpFjp2h75_b92t44sqraUcyu0/iYynQR8AtacsFUwWmrVaw4Smb_Q\"", "snippet": { "publishedAt": "2012-06-20T22:45:24.000Z", "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw", "title": "Google I/O 101: Q&A On Using Google APIs", "description": "Antonio Fuentes speaks to us and takes questions on working with Google APIs and OAuth 2.0.", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/hqdefault.jpg" } }, "categoryId": "28" }, "contentDetails": { "duration": "PT15M51S", "aspectRatio": "RATIO_16_9" }, "statistics": { "viewCount": "3057", "likeCount": "25", "dislikeCount": "0", "favoriteCount": "17", "commentCount": "12" }, "status": { "uploadStatus": "STATUS_PROCESSED", "privacyStatus": "PRIVACY_PUBLIC" } } ] }
URL: https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY
&part=snippet,statistics Description: This example modifies thepartparameter value so that thecontentDetailsandstatusproperties are not included in the response. API response:{ "kind": "youtube#videoListResponse", "etag": "\"UCBpFjp2h75_b92t44sqraUcyu0/sDAlsG9NGKfr6v5AlPZKSEZdtqA\"", "videos": [ { "id": "7lCDEYXw3mM", "kind": "youtube#video", "etag": "\"UCBpFjp2h75_b92t44sqraUcyu0/iYynQR8AtacsFUwWmrVaw4Smb_Q\"", "snippet": { "publishedAt": "2012-06-20T22:45:24.000Z", "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw", "title": "Google I/O 101: Q&A On Using Google APIs", "description": "Antonio Fuentes speaks to us and takes questions on working with Google APIs and OAuth 2.0.", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/hqdefault.jpg" } }, "categoryId": "28" }, "statistics": { "viewCount": "3057", "likeCount": "25", "dislikeCount": "0", "favoriteCount": "17", "commentCount": "12" } } ] }
URL: https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY
&part=snippet,statistics&fields=items(id,snippet,statistics) Description: This example adds thefieldsparameter to remove allkindandetagproperties from the API response. API response:{ "videos": [ { "id": "7lCDEYXw3mM", "snippet": { "publishedAt": "2012-06-20T22:45:24.000Z", "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw", "title": "Google I/O 101: Q&A On Using Google APIs", "description": "Antonio Fuentes speaks to us and takes questions on working with Google APIs and OAuth 2.0.", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/hqdefault.jpg" } }, "categoryId": "28" }, "statistics": { "viewCount": "3057", "likeCount": "25", "dislikeCount": "0", "favoriteCount": "17", "commentCount": "12" } } ] }
URL: https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY
&fields=items(id,snippet(channelId,title,categoryId),statistics)&part=snippet,statistics Description: This example modifies thefieldsparameter from example 3 so that in the API response, each video resource'ssnippetobject only includes thechannelId,title, andcategoryIdproperties. API response:{ "videos": [ { "id": "7lCDEYXw3mM", "snippet": { "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw", "title": "Google I/O 101: Q&A On Using Google APIs", "categoryId": "28" }, "statistics": { "viewCount": "3057", "likeCount": "25", "dislikeCount": "0", "favoriteCount": "17", "commentCount": "12" } } ] }
परफ़ॉर्मेंस को ऑप्टिमाइज़ करना
ETag का इस्तेमाल करना
ETags, एचटीटीपी प्रोटोकॉल का एक स्टैंडर्ड हिस्सा है. इसकी मदद से, ऐप्लिकेशन किसी एपीआई रिसॉर्स के खास वर्शन को रेफ़र कर सकते हैं. संसाधन, पूरा फ़ीड या उस फ़ीड में मौजूद कोई आइटम हो सकता है. इस सुविधा का इस्तेमाल इन कामों के लिए किया जा सकता है:
-
कैश मेमोरी में सेव करना और शर्त के हिसाब से डेटा वापस पाना – आपका ऐप्लिकेशन, एपीआई के संसाधनों और उनके ई-टैग को कैश मेमोरी में सेव कर सकता है. इसके बाद, जब आपका ऐप्लिकेशन सेव किए गए किसी संसाधन का फिर से अनुरोध करता है, तो वह उस संसाधन से जुड़ा ईटैग तय करता है. अगर संसाधन में बदलाव हुआ है, तो एपीआई, बदले गए संसाधन और संसाधन के उस वर्शन से जुड़ा ETag दिखाता है. अगर संसाधन में कोई बदलाव नहीं हुआ है, तो एपीआई, एचटीटीपी 304 रिस्पॉन्स (
Not Modified) दिखाता है. इससे पता चलता है कि संसाधन में कोई बदलाव नहीं हुआ है. इस तरह से कैश मेमोरी में सेव किए गए संसाधनों को उपलब्ध कराकर, आपका ऐप्लिकेशन इंतज़ार के समय और बैंडविड्थ के इस्तेमाल को कम कर सकता है.Google API की क्लाइंट लाइब्रेरी, ई-टैग के लिए अलग-अलग तरह से काम करती हैं. उदाहरण के लिए, JavaScript क्लाइंट लाइब्रेरी, अनुमति वाले अनुरोध के हेडर के लिए अनुमति वाली सूची के ज़रिए ETags का इस्तेमाल करती है. इसमें
If-MatchऔरIf-None-Matchशामिल हैं. अनुमति वाली सूची, सामान्य ब्राउज़र कैश मेमोरी को सेव करने की अनुमति देती है. इससे, अगर किसी संसाधन का ETag नहीं बदला है, तो संसाधन को ब्राउज़र कैश मेमोरी से दिखाया जा सकता है. वहीं दूसरी ओर, Obj-C क्लाइंट, ई-टैग के साथ काम नहीं करता. -
बदलावों को गलती से ओवरराइट होने से बचाना – ई-टैग यह पक्का करने में मदद करते हैं कि कई एपीआई क्लाइंट, गलती से एक-दूसरे के बदलावों को ओवरराइट न करें. किसी संसाधन को अपडेट या मिटाते समय, आपका ऐप्लिकेशन उस संसाधन का ई-टैग तय कर सकता है. अगर ईटैग, उस संसाधन के सबसे नए वर्शन से मेल नहीं खाता है, तो एपीआई अनुरोध पूरा नहीं होता.
अपने ऐप्लिकेशन में ई-टैग इस्तेमाल करने के कई फ़ायदे हैं:
- एपीआई, कैश मेमोरी में सेव किए गए लेकिन बिना बदलाव वाले रिसॉर्स के अनुरोधों का जवाब ज़्यादा तेज़ी से देता है. इससे इंतज़ार का समय और बैंडविड्थ का इस्तेमाल कम होता है.
- आपका ऐप्लिकेशन, किसी संसाधन में किए गए उन बदलावों को गलती से नहीं बदलेगा जो किसी अन्य एपीआई क्लाइंट ने किए थे.
Google APIs Client Library for JavaScript, If-Match और If-None-Match एचटीटीपी अनुरोध के हेडर के साथ काम करता है. इससे ई-टैग, सामान्य ब्राउज़र कैश मेमोरी के संदर्भ में काम कर पाते हैं.
gzip का इस्तेमाल करना
gzip कंप्रेशन को चालू करके, हर एपीआई से मिली जानकारी के लिए ज़रूरी बैंडविथ को भी कम किया जा सकता है. एपीआई से मिली जानकारी को अनकंप्रेस करने के लिए, आपके ऐप्लिकेशन को ज़्यादा सीपीयू समय की ज़रूरत होगी. हालांकि, कम नेटवर्क संसाधनों का इस्तेमाल करने का फ़ायदा, आम तौर पर उस लागत से ज़्यादा होता है.
gzip-एन्कोडेड रिस्पॉन्स पाने के लिए, आपको दो काम करने होंगे:
Accept-Encodingएचटीटीपी अनुरोध के हेडर कोgzipपर सेट करें.- अपने उपयोगकर्ता एजेंट में बदलाव करें, ताकि उसमें
gzipस्ट्रिंग शामिल हो.
यहां दिए गए सैंपल एचटीटीपी हेडर, gzip कंप्रेशन को चालू करने के लिए ज़रूरी शर्तों के बारे में बताते हैं:
Accept-Encoding: gzip User-Agent: my program (gzip)