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

परिचय

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

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

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

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

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

    1. API Console पर जाएं और वह प्रोजेक्ट चुनें जिसे आपने अभी रजिस्टर किया है.
    2. चालू किए गए एपीआई पेज पर जाएं. एपीआई की सूची में, पक्का करें कि YouTube Data API v3 के लिए स्टेटस चालू है पर सेट हो.

  4. अगर आपका ऐप्लिकेशन, एपीआई के ऐसे तरीकों का इस्तेमाल करेगा जिनके लिए उपयोगकर्ता की अनुमति ज़रूरी है, तो पुष्टि करने से जुड़ी गाइड पढ़ें. इससे आपको OAuth 2.0 ऑथराइज़ेशन लागू करने का तरीका पता चलेगा.

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

  6. JSON (JavaScript Object Notation) डेटा फ़ॉर्मैट की बुनियादी बातों के बारे में जानें. 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 को चालू करने वाले प्रोजेक्ट के लिए, हर दिन 10,000 यूनिट का डिफ़ॉल्ट कोटा तय किया जाता है. यह कोटा, API का इस्तेमाल करने वाले ज़्यादातर लोगों के लिए काफ़ी होता है. डिफ़ॉल्ट कोटा में बदलाव किया जा सकता है. इससे हमें कोटा के बंटवारे को ऑप्टिमाइज़ करने में मदद मिलती है. साथ ही, हम अपने इन्फ़्रास्ट्रक्चर को इस तरह से स्केल कर पाते हैं जो एपीआई का इस्तेमाल करने वाले लोगों के लिए ज़्यादा फ़ायदेमंद हो. एपीआई कंसोल में कोटा पेज पर, कोटा के इस्तेमाल की जानकारी देखी जा सकती है.

ध्यान दें: अगर आपने कोटे की सीमा पूरी कर ली है, तो YouTube API सेवाओं के लिए कोटा बढ़ाने का अनुरोध फ़ॉर्म भरकर, अतिरिक्त कोटे का अनुरोध किया जा सकता है.

इस्तेमाल किए गए कोटे का हिसाब लगाना

Google, हर अनुरोध के लिए कुछ शुल्क असाइन करके, आपके कोटे के इस्तेमाल का हिसाब लगाता है. अलग-अलग तरह के ऑपरेशन के लिए, कोटा की लागत अलग-अलग होती है. उदाहरण के लिए:

  • पढ़ने की कार्रवाई, संसाधनों (चैनल, वीडियो, प्लेलिस्ट) की सूची को वापस लाती है. आम तौर पर, इसकी कीमत 1 यूनिट होती है.
  • किसी संसाधन को बनाने, अपडेट करने या मिटाने के लिए किए जाने वाले राइट ऑपरेशन की लागत आम तौर पर 50 यूनिट होती है.
  • खोज के अनुरोध की लागत 100 यूनिट होती है.
  • वीडियो अपलोड करने पर 100 यूनिट खर्च होती हैं.

एपीआई अनुरोधों के लिए कोटा की लागत टेबल में, हर एपीआई तरीके के लिए कोटा की लागत दिखती है. यहां दिए गए नियमों को ध्यान में रखते हुए, यह अनुमान लगाया जा सकता है कि आपका ऐप्लिकेशन हर दिन कितने अनुरोध भेज सकता है. इससे, आपके कोटे का इस्तेमाल नहीं होगा.

आंशिक संसाधन

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

परफ़ॉर्मेंस को ऑप्टिमाइज़ करना

ईटैग का इस्तेमाल करना

ETags, एचटीटीपी प्रोटोकॉल का एक स्टैंडर्ड हिस्सा है. इससे ऐप्लिकेशन, किसी एपीआई संसाधन के किसी खास वर्शन का रेफ़रंस दे पाते हैं. संसाधन, पूरा फ़ीड या उस फ़ीड में मौजूद कोई आइटम हो सकता है. इस सुविधा का इस्तेमाल इन कामों के लिए किया जा सकता है:

  • कैश मेमोरी में सेव करना और शर्तों के हिसाब से डेटा वापस पाना – आपका ऐप्लिकेशन, एपीआई संसाधनों और उनके ईटैग को कैश मेमोरी में सेव कर सकता है. इसके बाद, जब आपका ऐप्लिकेशन सेव किए गए किसी संसाधन का फिर से अनुरोध करता है, तो वह उस संसाधन से जुड़ा ईटैग तय करता है. अगर संसाधन में बदलाव हुआ है, तो एपीआई बदले गए संसाधन और संसाधन के उस वर्शन से जुड़ा ईटैग दिखाता है. अगर संसाधन में कोई बदलाव नहीं हुआ है, तो एपीआई, एचटीटीपी 304 रिस्पॉन्स (Not Modified) दिखाता है. इससे पता चलता है कि संसाधन में कोई बदलाव नहीं हुआ है. इस तरह से कैश मेमोरी में सेव किए गए संसाधनों को उपलब्ध कराकर, आपका ऐप्लिकेशन लेटेन्सी और बैंडविड्थ के इस्तेमाल को कम कर सकता है.

    Google API की क्लाइंट लाइब्रेरी, ईटैग के साथ काम करने के मामले में अलग-अलग होती हैं. उदाहरण के लिए, JavaScript क्लाइंट लाइब्रेरी, अनुमति वाले अनुरोध हेडर के लिए, अनुमति वाली सूची के ज़रिए ETags का इस्तेमाल करती है. इसमें If-Match और If-None-Match शामिल हैं. सफ़ेद सूची में शामिल होने पर, ब्राउज़र की कैश मेमोरी में सामान्य तरीके से डेटा सेव किया जा सकता है. इससे अगर किसी संसाधन का ईटैग नहीं बदला है, तो संसाधन को ब्राउज़र की कैश मेमोरी से दिखाया जा सकता है. दूसरी ओर, Obj-C क्लाइंट, ETags के साथ काम नहीं करता.

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

अपने ऐप्लिकेशन में ETags का इस्तेमाल करने के कई फ़ायदे हैं:

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

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)