YouTube Data API की खास जानकारी

परिचय

यह दस्तावेज़ उन डेवलपर के लिए है जो YouTube के साथ इंटरैक्ट करने वाले ऐप्लिकेशन बनाना चाहते हैं. इसमें YouTube और एपीआई के बुनियादी सिद्धांतों के बारे में बताया गया है. इसमें, एपीआई के साथ काम करने वाले अलग-अलग फ़ंक्शन की खास जानकारी भी दी गई है.

शुरू करने से पहले

  1. Google Cloud Console को ऐक्सेस करने, एपीआई पासकोड का अनुरोध करने, और अपना ऐप्लिकेशन रजिस्टर करने के लिए, आपके पास Google खाता होना चाहिए.

  2. Google Developers Console में एक प्रोजेक्ट बनाएं और अनुमति के क्रेडेंशियल पाएं, ताकि आपका ऐप्लिकेशन एपीआई अनुरोध सबमिट कर सके.

  3. प्रोजेक्ट बनाने के बाद, पक्का करें कि YouTube Data API उन सेवाओं में से एक हो जिन्हें इस्तेमाल करने के लिए आपका ऐप्लिकेशन रजिस्टर किया गया है:

    1. Cloud Console पर जाएं और वह प्रोजेक्ट चुनें जिसे आपने अभी रजिस्टर किया है.
    2. चालू किए गए एपीआई पेज पर जाएं. पक्का करें कि YouTube Data API, चालू किए गए एपीआई की सूची में शामिल हो. अगर ऐसा नहीं है, तो एपीआई लाइब्रेरी खोलें और एपीआई को चालू करें.
  4. अगर आपका ऐप्लिकेशन, एपीआई के ऐसे तरीकों का इस्तेमाल करेगा जिनके लिए उपयोगकर्ता की अनुमति ज़रूरी है, तो OAuth 2.0 की अनुमति देने की सुविधा को लागू करने का तरीका जानने के लिए, पुष्टि करने की गाइड पढ़ें.

  5. एपीआई को आसानी से लागू करने के लिए, कोई क्लाइंट लाइब्रेरी चुनें.

  6. 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 संसाधन में ये चीज़ें शामिल होती हैं:

  • snippet
  • contentDetails
  • fileDetails
  • player
  • processingDetails
  • recordingDetails
  • statistics
  • status
  • suggestions
  • topicDetails

ये सभी हिस्से ऐसे ऑब्जेक्ट हैं जिनमें नेस्ट की गई प्रॉपर्टी होती हैं. इन ऑब्जेक्ट को मेटाडेटा फ़ील्ड के ग्रुप के तौर पर देखा जा सकता है. एपीआई सर्वर इन ग्रुप को वापस पा सकता है या नहीं. इसलिए, 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/position
  • fields=items(id,snippet/title,snippet/position)
  • fields=items(id,snippet(title,position))

ध्यान दें: पूरी क्वेरी पैरामीटर वैल्यू की तरह, fields पैरामीटर वैल्यू को भी कोड में बदलना ज़रूरी है. इस दस्तावेज़ में दिए गए उदाहरणों में कोड में बदलने के तरीके को शामिल नहीं किया गया है, ताकि उन्हें आसानी से पढ़ा जा सके.

अधूरे अनुरोधों के सैंपल

यहां दिए गए उदाहरणों से पता चलता है कि part और fields पैरामीटर का इस्तेमाल करके, यह कैसे पक्का किया जा सकता है कि एपीआई से मिले जवाबों में सिर्फ़ वह डेटा शामिल हो जिसका इस्तेमाल आपका ऐप्लिकेशन करता है:

  1. पहले उदाहरण में, एक वीडियो रिसॉर्स दिखाया गया है. इसमें चार हिस्सों के साथ-साथ, kind और etag प्रॉपर्टी शामिल हैं.
  2. दूसरे उदाहरण में, एक वीडियो रिसॉर्स दिखाया गया है. इसमें दो हिस्सों के साथ-साथ, kind और etag प्रॉपर्टी भी शामिल हैं.
  3. तीसरे उदाहरण में, एक ऐसा वीडियो संसाधन दिखाया गया है जिसमें दो हिस्से शामिल हैं. हालांकि, इसमें kind और etag प्रॉपर्टी शामिल नहीं हैं.
  4. चौथे उदाहरण में, एक वीडियो संसाधन दिखाया गया है. इसमें दो हिस्से शामिल हैं, लेकिन 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 a video resource 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 the part parameter value so that the contentDetails and status properties 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 the fields parameter to remove all kind and etag properties 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 the fields parameter from example 3 so that in the API response, each video resource's snippet object only includes the channelId, title, and categoryId properties. 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)