परिचय
Place Details (नया), Nearby Search (नया), या Text Search (नया) के तरीके इस्तेमाल करते समय, आपको यह बताना होगा कि आपको रिस्पॉन्स में कौनसे फ़ील्ड चाहिए. लौटाए गए फ़ील्ड की कोई डिफ़ॉल्ट सूची नहीं होती. अगर आपने यह सूची नहीं दी, तो ये तरीके गड़बड़ी वाला रिस्पॉन्स लौटाएंगे.
इस्तेमाल किए जा सकने वाले डेटा फ़ील्ड और उनके SKU की पूरी सूची, Place Data Fields (नया) में देखी जा सकती है. हर एपीआई के लिए खास फ़ील्ड की जानकारी पाने के लिए, यहां दिया गया लेख पढ़ें:
- Place Details (नया) FieldMask पैरामीटर
- Nearby Search (नया) FieldMask पैरामीटर
- Text Search (नया) FieldMask पैरामीटर
रिस्पॉन्स फ़ील्ड मास्क बनाकर, फ़ील्ड की सूची तय की जाती है. इसके बाद, पैरामीटर $fields या
fields का इस्तेमाल करके या एचटीटीपी या gRPC हेडर X-Goog-FieldMask का इस्तेमाल करके, रिस्पॉन्स फ़ील्ड मास्क को किसी भी तरीके से पास किया जाता है.
फ़ील्ड मास्किंग, डिज़ाइन से जुड़ी एक अच्छी प्रैक्टिस है. इससे यह पक्का किया जाता है कि आपने ज़रूरत से ज़्यादा डेटा का अनुरोध न किया हो. इससे, ज़रूरत से ज़्यादा प्रोसेसिंग में लगने वाले समय और बिलिंग शुल्क से बचा जा सकता है.
रिस्पॉन्स फ़ील्ड मास्क तय करना
रिस्पॉन्स फ़ील्ड मास्क, पाथ की कॉमा से अलग की गई सूची होती है. इसमें हर पाथ, रिस्पॉन्स बॉडी में मौजूद किसी यूनीक फ़ील्ड के बारे में बताता है. पाथ, टॉप-लेवल रिस्पॉन्स मैसेज से शुरू होता है और तय किए गए फ़ील्ड तक पहुंचने के लिए, डॉट से अलग किए गए पाथ का इस्तेमाल करता है.
फ़ील्ड पाथ इस तरह बनाएं:
topLevelField[.secondLevelField][.thirdLevelField][...]
* का फ़ील्ड मास्क इस्तेमाल करके, सभी फ़ील्ड का अनुरोध किया जा सकता है.
फ़ील्ड मास्क बनाने के तरीके के बारे में ज़्यादा जानने के लिए, field_mask.proto देखें.
तय करना कि कौनसे फ़ील्ड मास्क इस्तेमाल करने हैं
यहां बताया गया है कि कौनसे फ़ील्ड मास्क इस्तेमाल करने हैं, यह कैसे तय किया जा सकता है:
*का फ़ील्ड मास्क इस्तेमाल करके, सभी फ़ील्ड का अनुरोध करें.- रिस्पॉन्स में मौजूद फ़ील्ड के क्रम को देखें और तय करें कि आपको कौनसे फ़ील्ड चाहिए.
- फ़ील्ड के क्रम का इस्तेमाल करके, अपना फ़ील्ड मास्क बनाएं.
Nearby Search (नया) और Text Search (नया) के लिए, रिस्पॉन्स फ़ील्ड मास्क तय करना
Nearby Search (नया) और Text Search (नया) के रिस्पॉन्स के places फ़ील्ड में, Place ऑब्जेक्ट का कलेक्शन मिलता है. इन एपीआई के लिए, places, रिस्पॉन्स का टॉप-लेवल फ़ील्ड होता है.
उदाहरण के लिए, Text Search (नया) से पूरा रिस्पॉन्स ऑब्जेक्ट देखने के लिए:
curl -X POST -d '{
"textQuery" : "Spicy Vegetarian Food in Sydney, Australia"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: *' \
'https://places.googleapis.com/v1/places:searchText'Text Search (नया) कॉल से मिलने वाला पूरा रिस्पॉन्स ऑब्जेक्ट, इस फ़ॉर्मैट में होता है:
{ "places": [ { "name": "places/ChIJs5ydyTiuEmsR0fRSlU0C7k0", "id": "ChIJs5ydyTiuEmsR0fRSlU0C7k0", "types": [ "vegetarian_restaurant", "vegan_restaurant", "meal_takeaway", "restaurant", "food", "point_of_interest", "establishment" ], "nationalPhoneNumber": "0433 479 794", "internationalPhoneNumber": "+61 433 479 794", "formattedAddress": "29 King St, Sydney NSW 2000, Australia", "displayName": { "text": "Spiced @ Barangaroo", "languageCode": "en" }, ... }, ... ] }
इसलिए, इन एपीआई के लिए, इस फ़ॉर्मैट में फ़ील्ड मास्क तय करें:
places[.secondLevelField][.thirdLevelField][...]
अगर आपको सिर्फ़ formattedAddress और displayName फ़ील्ड चाहिए, तो अपना फ़ील्ड मास्क इस तरह सेट करें:
places.formattedAddress,places.displayName
displayName तय करने पर, displayName के text और language फ़ील्ड, दोनों शामिल हो जाते हैं. अगर आपको सिर्फ़ text फ़ील्ड चाहिए, तो फ़ील्ड मास्क इस तरह सेट करें:
places.formattedAddress,places.displayName.text
Place Details (नया) के लिए, रिस्पॉन्स फ़ील्ड मास्क तय करना
Place Details (नया) से, इस फ़ॉर्मैट में एक Place ऑब्जेक्ट मिलता है:
{ "name": "places/ChIJkR8FdQNB0VQRm64T_lv1g1g", "id": "ChIJkR8FdQNB0VQRm64T_lv1g1g", "types": [ "locality", "political" ], "formattedAddress": "Trinidad, CA 95570, USA", "displayName": { "text": "Trinidad", "languageCode": "en" } ... }
इसलिए, इस एपीआई के लिए, Place ऑब्जेक्ट के उन फ़ील्ड को तय करके फ़ील्ड मास्क तय करें जिनकी वैल्यू आपको चाहिए:
curl -X GET -H 'Content-Type: application/json' \ -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: formattedAddress,displayName" \ https://places.googleapis.com/v1/places/ChIJj61dQgK6j4AR4GeTYWZsKWw
gRPC कॉल
gRPC के लिए, रिस्पॉन्स फ़ील्ड मास्क वाला कोई वैरिएबल सेट करें. इसके बाद, उस वैरिएबल को अनुरोध में पास किया जा सकता है.
const ( fieldMask = "places.formattedAddress,places.displayName" )
फ़ील्ड पाथ से जुड़ी ज़रूरी बातें
रिस्पॉन्स में सिर्फ़ वे फ़ील्ड शामिल करें जिनकी आपको ज़रूरत है. सिर्फ़ वे फ़ील्ड लौटाने से जिनकी आपको ज़रूरत है:
- प्रोसेसिंग में लगने वाला समय कम हो जाता है. इसलिए, आपको नतीजे कम समय में मिलते हैं .
- रिस्पॉन्स मिलने में लगने वाला समय स्थिर रहता है . ऐसा तब होता है, जब एपीआई आने वाले समय में रिस्पॉन्स के ज़्यादा फ़ील्ड जोड़ता है और उन नए फ़ील्ड के लिए, ज़्यादा समय की ज़रूरत होती है. अगर आपने सभी फ़ील्ड चुने हैं या टॉप लेवल पर सभी फ़ील्ड चुने हैं, तो हो सकता है कि आपके रिस्पॉन्स में सभी नए फ़ील्ड अपने-आप शामिल होने पर, परफ़ॉर्मेंस में गिरावट आए.
- रिस्पॉन्स का साइज़ कम हो जाता है. इससे नेटवर्क थ्रूपुट बढ़ जाता है.
- यह पक्का किया जाता है कि आपने ज़रूरत से ज़्यादा डेटा का अनुरोध न किया हो. इससे, ज़रूरत से ज़्यादा प्रोसेसिंग में लगने वाले समय और बिलिंग शुल्क से बचा जा सकता है.