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

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

आंशिक संसाधनों के साथ काम करना

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

अधूरे जवाब

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

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

उदाहरण

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

आसान अनुरोध: यह एचटीटीपी GET अनुरोध, fields पैरामीटर को हटा देता है और पूरा रिसॉर्स दिखाता है.

GET https://displayvideo.googleapis.com/v3/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/v3/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 और GeneralConfig domainUrl की वैल्यू दिखाता है.
अधूरे जवाबों को मैनेज करना

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