परफ़ॉर्मेंस को बेहतर करें

इस दस्तावेज़ में कुछ तकनीकों के बारे में बताया गया है. इनका इस्तेमाल करके, अपने ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाया जा सकता है. कुछ मामलों में, दिए गए आइडिया को समझाने के लिए, लागू किए गए अन्य एपीआई के उदाहरणों का इस्तेमाल किया जाता है. हालांकि, ये कॉन्सेप्ट Display & Video 360 API पर भी लागू होते हैं.

कुछ संसाधनों के साथ काम करना

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

अधूरे जवाब

डिफ़ॉल्ट रूप से, सर्वर अनुरोधों को प्रोसेस करने के बाद, किसी संसाधन का पूरा रिप्रज़ेंटेशन भेजता है. बेहतर परफ़ॉर्मेंस के लिए, सर्वर से सिर्फ़ वे फ़ील्ड भेजने के लिए कहा जा सकता है जिनकी आपको ज़रूरत है. इससे आपको कुछ हद तक जवाब मिलता है.

कुछ हिस्से के रिस्पॉन्स का अनुरोध करने के लिए, fields अनुरोध पैरामीटर का इस्तेमाल करके, वे फ़ील्ड बताएं जिन्हें आपको दिखाना है. इस पैरामीटर का इस्तेमाल, जवाब के तौर पर डेटा दिखाने वाले किसी भी अनुरोध के साथ किया जा सकता है.

उदाहरण

नीचे दिए गए उदाहरण में, Display & Video 360 API के साथ fields पैरामीटर के इस्तेमाल के बारे में बताया गया है.

सामान्य अनुरोध: इस एचटीटीपी GET अनुरोध में fields पैरामीटर शामिल नहीं है और यह पूरा संसाधन दिखाता है.

GET https://displayvideo.googleapis.com/v4/advertisers?partnerId=1

संसाधन का पूरा जवाब: संसाधन के पूरे डेटा में, यहां दिए गए फ़ील्ड के साथ-साथ कई अन्य फ़ील्ड भी शामिल होते हैं. हालांकि, हमने इन्हें छोटा रखने के लिए शामिल नहीं किया है.

200 OK

{
 "advertisers": [
  {
   "name": "advertisers/1",
   "advertiserId": "1",
   "partnerId": "1",
   "displayName": "Example Advertiser 1",
   "entityStatus": "ENTITY_STATUS_ACTIVE",
   "updateTime": "2019-01-01T00:00:00.000000Z",
   "generalConfig": {
    "domainUrl": "http://example.com",
    "timeZone": "America/New_York",
    "currencyCode": "USD",
    "address": {
    }
   },
   "adServerConfig": {
    "thirdPartyOnlyConfig": {
    }
   },
   "creativeConfig": {
   },
   "dataAccessConfig": {
    "sdfConfig": {
     "sdfConfig": {
      "version": "VERSION_3_1"
     }
    }
   },
   "integrationDetails": {
   }
  },
  {
   "name": "advertisers/2",
   "advertiserId": "2",
   "partnerId": "1",
   "displayName": "Example Advertiser 2",
   "entityStatus": "ENTITY_STATUS_ACTIVE",
   "updateTime": "2019-01-01T00:00:00.000000Z",
   "generalConfig": {
    "domainUrl": "http://example.com",
    "timeZone": "America/New_York",
    "currencyCode": "USD",
    "address": {
    }
   },
   "adServerConfig": {
    "thirdPartyOnlyConfig": {
    }
   },
   "creativeConfig": {
   },
   "dataAccessConfig": {
    "sdfConfig": {
     "sdfConfig": {
      "version": "VERSION_3_1"
     }
    }
   },
   "integrationDetails": {
   }
  },
  ...
 ],
 "nextPageToken": "..."
}

कुछ हिस्से के जवाब का अनुरोध: इस ही संसाधन के लिए, नीचे दिया गया अनुरोध, fields पैरामीटर का इस्तेमाल करता है, ताकि मिलने वाले डेटा की संख्या को काफ़ी कम किया जा सके.

GET https://displayvideo.googleapis.com/v4/advertisers?partnerId=1&fields=advertisers(advertiserId,partnerId,displayName)

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

200 OK

{
 "advertisers": [
  {
   "advertiserId": "1",
   "partnerId": "1",
   "displayName": "Example Advertiser 1"
  },
  {
   "advertiserId": "2",
   "partnerId": "1",
   "displayName": "Example Advertiser 2"
  },
  ...
 ]
}

ध्यान दें कि रिस्पॉन्स एक JSON ऑब्जेक्ट होता है. इसमें सिर्फ़ चुने गए फ़ील्ड और उनके पैरंट ऑब्जेक्ट शामिल होते हैं.

इसके बाद, fields पैरामीटर को फ़ॉर्मैट करने का तरीका बताया गया है. इसके बाद, रिस्पॉन्स में क्या दिखता है, इस बारे में ज़्यादा जानकारी दी गई है.

फ़ील्ड पैरामीटर सिंटैक्स की खास जानकारी

fields अनुरोध पैरामीटर की वैल्यू का फ़ॉर्मैट, XPath सिंटैक्स पर आधारित होता है. काम करने वाले सिंटैक्स के बारे में खास जानकारी नीचे दी गई है. साथ ही, अगले सेक्शन में और उदाहरण दिए गए हैं.

  • एक से ज़्यादा फ़ील्ड चुनने के लिए, कॉमा से अलग की गई सूची का इस्तेमाल करें.

  • a फ़ील्ड में नेस्ट किए गए b फ़ील्ड को चुनने के लिए, a/b का इस्तेमाल करें. b में नेस्ट किए गए c फ़ील्ड को चुनने के लिए, a/b/c का इस्तेमाल करें.

  • ऐरे या ऑब्जेक्ट के खास सब-फ़ील्ड के सेट का अनुरोध करने के लिए, सब-सिलेक्टर का इस्तेमाल करें. इसके लिए, एक्सप्रेशन को ब्रैकेट "( )" में डालें.

    उदाहरण के लिए: fields=advertisers(advertiserId,generalConfig/domainUrl), विज्ञापन देने वालों के कलेक्शन में मौजूद हर एलिमेंट के लिए, सिर्फ़ विज्ञापन देने वाले का आईडी और डोमेन यूआरएल दिखाता है. एक सब-फ़ील्ड भी तय किया जा सकता है, जहां fields=advertisers(advertiserId), fields=advertisers/advertiserId के बराबर हो.

फ़ील्ड पैरामीटर का इस्तेमाल करने के और उदाहरण

नीचे दिए गए उदाहरणों में बताया गया है कि fields पैरामीटर की वैल्यू, रिस्पॉन्स पर कैसे असर डालती है.

उन फ़ील्ड की पहचान करें जिन्हें आपको दिखाना है या फ़ील्ड चुनें.

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

कलेक्शन-लेवल के कुछ उदाहरण यहां दिए गए हैं:

उदाहरण असर
advertisers advertisers कलेक्शन में मौजूद सभी एलिमेंट दिखाता है. इनमें हर एलिमेंट के सभी फ़ील्ड शामिल होते हैं, लेकिन कोई दूसरा फ़ील्ड नहीं.
advertisers,nextPageToken nextPageToken फ़ील्ड और advertisers कलेक्शन के सभी एलिमेंट दिखाता है.
advertisers/advertiserId advertisers कलेक्शन के सभी एलिमेंट के लिए, सिर्फ़ advertiserId दिखाता है.

जब भी नेस्ट किया गया कोई फ़ील्ड दिखाया जाता है, तो जवाब में उसे घेरे हुए पैरंट ऑब्जेक्ट भी शामिल होते हैं. पैरंट फ़ील्ड में तब तक कोई दूसरा चाइल्ड फ़ील्ड शामिल नहीं होता, जब तक कि उसे साफ़ तौर पर नहीं चुना जाता.
advertisers/generalConfig/domainUrl generalConfig ऑब्जेक्ट के लिए domainUrl फ़ील्ड दिखाता है. यह ऑब्जेक्ट, advertisers कलेक्शन में नेस्ट होता है.

यहां संसाधन-लेवल के कुछ उदाहरण दिए गए हैं:

उदाहरण असर
advertiserId अनुरोध किए गए संसाधन का advertiserId फ़ील्ड दिखाता है.
generalConfig/domainUrl अनुरोध किए गए संसाधन में, generalConfig ऑब्जेक्ट के लिए domainUrl फ़ील्ड दिखाता है.
सब-चुनी गई वैल्यू का इस्तेमाल करके, सिर्फ़ चुनिंदा फ़ील्ड के कुछ हिस्सों का अनुरोध करें.

अगर आपके अनुरोध में कुछ खास फ़ील्ड शामिल हैं, तो डिफ़ॉल्ट रूप से सर्वर, ऑब्जेक्ट या कलेक्शन के सभी एलिमेंट दिखाता है. आपके पास ऐसा रिस्पॉन्स तय करने का विकल्प होता है जिसमें सिर्फ़ कुछ सब-फ़ील्ड शामिल हों. ऐसा करने के लिए, "( )" सब-सिलेक्शन सिंटैक्स का इस्तेमाल करें, जैसा कि नीचे दिए गए उदाहरण में बताया गया है.

उदाहरण असर
advertisers(advertiserId,generalConfig/domainUrl) advertisers कलेक्शन में मौजूद हर एलिमेंट के लिए, सिर्फ़ advertiserId और generalConfigdomainUrl की वैल्यू दिखाता है.
अधूरे जवाबों को मैनेज करना

जब कोई सर्वर, fields क्वेरी पैरामीटर वाले मान्य अनुरोध को प्रोसेस कर लेता है, तो वह अनुरोध किए गए डेटा के साथ एचटीटीपी 200 OK स्टेटस कोड भेजता है. अगर fields क्वेरी पैरामीटर में कोई गड़बड़ी है या वह अमान्य है, तो सर्वर एचटीटीपी 400 Bad Request स्टेटस कोड के साथ गड़बड़ी का मैसेज दिखाता है. इस मैसेज से पता चलता है कि फ़ील्ड के चुने गए विकल्प में क्या गड़बड़ी है (उदाहरण के लिए, "Invalid field selection a/b").