Drive API v2 और v3 की तुलना करने वाली गाइड

Google Drive API का सबसे नया वर्शन v3 है. वर्शन 3 में परफ़ॉर्मेंस बेहतर है, क्योंकि खोजों से सिर्फ़ फ़ील्ड का सबसेट मिलता है. अगर आपको v2 कलेक्शन की ज़रूरत नहीं है, तो मौजूदा वर्शन का इस्तेमाल करें. अगर v2 का इस्तेमाल किया जा रहा है, तो v3 पर माइग्रेट करें. माइग्रेट करने के लिए, Drive API v3 में माइग्रेट करें देखें. वर्शन के अंतर की पूरी सूची देखने के लिए, Drive API v2 और v3 की तुलना करने से जुड़ा रेफ़रंस देखें.

अगर आपको v2 का इस्तेमाल जारी रखना है, तो Drive API v2 के लिए गाइड में किया गया संशोधन देखें. इससे आपको पता चलेगा कि v2 डेवलपर के लिए, v3 गाइड में दिए गए कुछ निर्देशों में किस तरह बदलाव किया जाना चाहिए.

Drive API v3 को बेहतर बनाने के बारे में ज़्यादा जानने के लिए, Google के इंजीनियरों का वह वीडियो देखें जिसमें एपीआई के नए डिज़ाइन के बारे में चर्चा की गई है.

V3 सुधार

परफ़ॉर्मेंस को ऑप्टिमाइज़ करने और एपीआई के काम करने के तरीके की जटिलता को कम करने के लिए, v3 में एपीआई के पिछले वर्शन की तुलना में ये सुधार किए गए हैं:

  • फ़ाइलों और शेयर की गई ड्राइव की खोज करने पर, डिफ़ॉल्ट रूप से सभी संसाधन नहीं दिखते. इसमें, आम तौर पर इस्तेमाल किए जाने वाले फ़ील्ड का सिर्फ़ एक सबसेट दिखाया जाता है. fields के बारे में ज़्यादा जानकारी के लिए, files.list और drives.list तरीका देखें.
  • जवाब देने वाले करीब-करीब सभी तरीकों के लिए अब fields पैरामीटर की ज़रूरत होती है. जिन तरीकों के लिए fields का इस्तेमाल करना ज़रूरी है उनकी सूची के लिए, Drive API का रेफ़रंस देखें.
  • डुप्लीकेट क्षमताओं वाले संसाधन हटा दिए गए. कुछ उदाहरण:
    • files.list तरीके में Children और Parents कलेक्शन जैसी ही सुविधाएं मिलती हैं. इसलिए, उन्हें v3 से हटा दिया जाता है.
    • Realtime.* तरीके हटा दिए गए हैं.
  • खोज नतीजों में ऐप्लिकेशन का डेटा, डिफ़ॉल्ट रूप से नहीं दिखता. v2 में, drive.appdata का स्कोप सेट किया जा सकता है. यह files.list वाले तरीके और changes.list तरीके से ऐप्लिकेशन का डेटा दिखाता है, लेकिन इससे परफ़ॉर्मेंस धीमी हो जाती है. वर्शन 3 में, drive.appdata का स्कोप सेट किया गया है. साथ ही, ऐप्लिकेशन डेटा का अनुरोध करने के लिए, क्वेरी पैरामीटर spaces=appDataFolder भी सेट किया गया है.
  • सभी अपडेट ऑपरेशन में PUT के बजाय PATCH का इस्तेमाल किया जाता है.
  • Google दस्तावेज़ एक्सपोर्ट करने के लिए, files.export तरीके का इस्तेमाल करें.
  • changes.list तरीके का तरीका अलग है. बदलाव आईडी के बजाय, ओपेक पेज टोकन का इस्तेमाल करें. बदलावों के कलेक्शन की पोलिंग के लिए, सबसे पहले शुरुआती वैल्यू के changes.getStartPageToken तरीके का इस्तेमाल करें. बाद की क्वेरी के लिए, changes.list तरीका newStartPageToken वैल्यू दिखाता है.
  • अपडेट करने के तरीके अब ऐसे अनुरोधों को अस्वीकार कर देते हैं जो लिखे न जा सकने वाले फ़ील्ड के बारे में बताते हैं.
  • about संसाधन में मौजूद v2 exportFormats और importFormats फ़ील्ड में, इंपोर्ट या एक्सपोर्ट किए जा सकने वाले फ़ॉर्मैट की सूचियां दी गई हैं. v3 में, ये MIME टाइप वाले मैप होते हैं. इनकी मदद से, इस्तेमाल किए जा सकने वाले सभी इंपोर्ट या एक्सपोर्ट के लिए टारगेट किए जा सकते हैं.
  • v2 appdata और appfolder के उपनामों को अब v3 में appDataFolder कर दिया गया है.
  • properties संसाधन को वर्शन 3 से हटा दिया गया है. files संसाधन में properties फ़ील्ड होता है, जिसमें सही की-वैल्यू पेयर होते हैं. properties फ़ील्ड में सार्वजनिक प्रॉपर्टी होती है और appProperties फ़ील्ड में निजी प्रॉपर्टी होती है. इसलिए, 'किसको दिखे' फ़ील्ड की ज़रूरत नहीं है.
  • जब पिछली बार किसी ने फ़ाइल में बदलाव किया था, तब files संसाधन में मौजूद modifiedTime फ़ील्ड अपडेट हो जाता है. अगर आपने setModifiedDate फ़ील्ड को सेट किया है, तो वर्शन 2 में modifiedDate फ़ील्ड को सिर्फ़ अपडेट करने पर ही बदला जा सकता है.
  • files संसाधन में मौजूद viewedByMeTime फ़ील्ड अपने-आप अपडेट नहीं होता है.
  • Google Docs फ़ॉर्मैट को इंपोर्ट करने के लिए, संसाधन के मुख्य हिस्से में सही टारगेट mimeType सेट किया जाना चाहिए. वर्शन 2 में आपने ?convert=true को सेट किया है.
  • अगर फ़ॉर्मैट काम नहीं करता है, तो इंपोर्ट ऑपरेशन 400 वाली गड़बड़ी दिखाते हैं.
  • टिप्पणी पढ़ने और टिप्पणी करने वाले लोग, अनुमतियां नहीं देख सकते.
  • अनुमतियों के लिए, me का उपनाम हटा दिया गया है.
  • कुछ सुविधाएं, अनुरोध संसाधन के हिस्से के तौर पर उपलब्ध थीं, लेकिन वे अनुरोध पैरामीटर के तौर पर उपलब्ध नहीं हैं. उदाहरण के लिए:
    • वर्शन 2 में, पैरंट फ़ोल्डर से किसी चाइल्ड फ़ाइल को हटाने के लिए, children.delete का इस्तेमाल किया जा सकता है.
    • वर्शन 3 में, यूआरएल में ?removeParents=parent_id वाले चाइल्ड पर files.update का इस्तेमाल किया गया है.

अन्य अंतर

वर्शन 3 में फ़ील्ड और पैरामीटर के नाम अलग-अलग हैं. अपवाद के कुछ और उदाहरण यहां दिए हैं:

  • files संसाधन में name प्रॉपर्टी, title की जगह ले लेती है.
  • सभी तारीख और समय फ़ील्ड के लिए Date के बजाय, Time सफ़िक्स है.
  • नतीजे के सेट को शामिल करने के लिए, लिस्ट ऑपरेशन में items फ़ील्ड का इस्तेमाल नहीं किया जाता. संसाधन के टाइप से, नतीजों के लिए एक फ़ील्ड मिलता है. जैसे, files या changes.