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

परिचय

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

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

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

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

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

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

  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 यह किसी प्लेलिस्ट का हिस्सा होने वाले संसाधन की पहचान करता है, जैसे कि कोई वीडियो. प्लेलिस्टItem संसाधन में ऐसी जानकारी भी शामिल होती है जिससे पता चलता है कि प्लेलिस्ट में शामिल संसाधन का इस्तेमाल कैसे किया जाता है.
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 यूनिट यूनिट होती हैं. यह हमारे एपीआई का इस्तेमाल करने वाले ज़्यादातर लोगों के लिए काफ़ी है. डिफ़ॉल्ट कोटा बदला जा सकता है. इससे हमें कोटा के बंटवारे को ऑप्टिमाइज़ करने और अपने इंफ़्रास्ट्रक्चर को इस तरह से बढ़ाने में मदद मिलती है जो हमारे एपीआई उपयोगकर्ताओं के लिए ज़्यादा काम का हो. एपीआई कंसोल में, कोटा पेज पर जाकर, कोटा के इस्तेमाल की जानकारी देखी जा सकती है.

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

कोटा के इस्तेमाल की गणना की जा रही है

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

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

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

सीमित संसाधन

एपीआई, आंशिक संसाधनों को वापस लाने की अनुमति देता है और असल में इनकी ज़रूरत होती है. इससे ऐप्लिकेशन, ग़ैर-ज़रूरी डेटा ट्रांसफ़र, पार्स, और सेव नहीं करते. इससे यह भी पक्का होता है कि एपीआई, नेटवर्क, 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=*) का इस्तेमाल करें.
  • एपीआई के रिस्पॉन्स में शामिल की जाने वाली नेस्ट की गई प्रॉपर्टी के ग्रुप के बारे में बताने के लिए, ब्रैकेट (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. उदाहरण 1 में ऐसा वीडियो रिसॉर्स दिखाया गया है जिसके चार हिस्सों के साथ-साथ kind और etag प्रॉपर्टी भी शामिल हैं.
  2. उदाहरण 2 ऐसा वीडियो रिसॉर्स दिखाता है जिसमें दो हिस्सों के साथ-साथ kind और etag प्रॉपर्टी भी शामिल होती हैं.
  3. उदाहरण 3 ऐसा वीडियो रिसॉर्स दिखाता है जिसमें दो हिस्से शामिल हैं, लेकिन kind और etag प्रॉपर्टी शामिल नहीं हैं.
  4. उदाहरण 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" } } ] }
उदाहरण 4
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, एचटीटीपी प्रोटोकॉल का एक स्टैंडर्ड हिस्सा है. इसकी मदद से, ऐप्लिकेशन किसी खास एपीआई संसाधन के खास वर्शन का रेफ़रंस ले सकते हैं. संसाधन एक पूरा फ़ीड या उस फ़ीड में मौजूद कोई आइटम हो सकता है. इस सुविधा का इस्तेमाल, इन उदाहरणों में किया जा सकता है:

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

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

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

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

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

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)