Google Maps Platform की वेब सेवाएं, Google के लिए एचटीटीपी इंटरफ़ेस का कलेक्शन हैं आपके मैप ऐप्लिकेशन के लिए भौगोलिक डेटा देने वाली सेवाएं.
इस गाइड में, कुछ सामान्य तरीक़ों के बारे में बताया गया है. वेब सेवा अनुरोध और सेवा से जुड़े जवाबों को प्रोसेस किया जा सकता है. डेवलपर की गाइड देखें Map Tiles API के संपूर्ण दस्तावेज़ के लिए.
वेब सेवा क्या है?
Google Maps Platform वेब सेवाएं एक ऐसा इंटरफ़ेस है जिससे Maps API के डेटा का अनुरोध किया जा सकता है बाहरी सेवाओं और आपके Maps ऐप्लिकेशन के डेटा के इस्तेमाल पर किया जा सकता है. ये सेवाएं हैं: के अनुसार उपयोग किए जाने के लिए डिज़ाइन किया गया है, लाइसेंस से जुड़ी पाबंदियां देखें.
Maps API की वेब सेवाएं, खास यूआरएल के लिए एचटीटीपी अनुरोधों का इस्तेमाल करती हैं, यूआरएल पैरामीटर पास करती हैं, और/या सेवाओं के लिए आर्ग्युमेंट के तौर पर, JSON फ़ॉर्मैट में पीओएसटी डेटा का इस्तेमाल किया जाना. आम तौर पर, ये सेवाएं पार्स करने के लिए JSON के तौर पर रिस्पॉन्स का मुख्य हिस्सा और/या आपके आवेदन के मुताबिक प्रोसेस किया जा रहा है.
वेब सेवा के अनुरोध का एक उदाहरण यह है: Street View मेटाडेटा के लिए अनुरोध, इसका यह फ़ॉर्म होता है:https://tile.googleapis.com/v1/streetview/metadata?session=YOUR_SESSION_TOKEN &key=YOUR_API_KEY &panoId=panoId
ध्यान दें: सभी Map Tiles API ऐप्लिकेशन की पुष्टि करना ज़रूरी है. पुष्टि करने के क्रेडेंशियल के बारे में ज़्यादा जानें.
एसएसएल/टीएलएस ऐक्सेस
एचटीटीपीएस, Google Maps Platform के उन सभी अनुरोधों के लिए ज़रूरी है जिनमें एपीआई पासकोड का इस्तेमाल किया जाता है या जिनमें उपयोगकर्ता शामिल होता है डेटा शामिल है. एचटीटीपी पर किए गए ऐसे अनुरोध जिनमें संवेदनशील जानकारी शामिल है, उन्हें अस्वीकार किया जा सकता है.
Google API का आसान इस्तेमाल
खराब तरीके से डिज़ाइन किए गए एपीआई क्लाइंट, इंटरनेट और Google के सर्वर पर. इस सेक्शन में, एपीआई के क्लाइंट के लिए कुछ सबसे सही तरीके बताए गए हैं. फ़ॉलो कर रहे हैं इन सबसे सही तरीकों की मदद से, ऐप्लिकेशन को ब्लॉक किए जाने से बचाया जा सकता है. इसकी वजह यह है कि को ट्रैक कर सकते हैं.
एक्स्पोनेंशियल बैकऑफ़
बहुत कम मामलों में, आपके अनुरोध को पूरा करने में कोई गड़बड़ी हो सकती है; तो आपको 4XX या 5XX या तो टीसीपी कनेक्शन आपके क्लाइंट और Google के सर्वर. अक्सर अनुरोध को इस तरह से करना अच्छा रहता है कि पहला अनुरोध पूरा न होने पर, फ़ॉलोअप अनुरोध पूरा हो सकता है. हालांकि, यह ज़रूरी है कि इस प्रोसेस के दौरान, Google के सर्वर से बार-बार अनुरोध करने के लिए लूप में जाते हैं. लूप में चलने वाले इस तरीके की वजह से आपके क्लाइंट और Google के बीच के नेटवर्क की वजह से, कई पक्षों को समस्या हो रही है.
एक बेहतर तरीका यह है कि दो कोशिशों के बीच में देरी होने पर, फिर से कोशिश करें. आम तौर पर हर कोशिश में एक से ज़्यादा कारक की मदद से देरी होती है. इसे इस तरीके से जाना जाता है: एक्सपोनेन्शियल बैकऑफ़.
उदाहरण के लिए, वह ऐप्लिकेशन देखें जो टाइम ज़ोन एपीआई:
https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510×tamp=1331161200&key=YOUR_API_KEY
Python के इस उदाहरण में, एक्स्पोनेंशियल बैकऑफ़ के साथ अनुरोध करने का तरीका बताया गया है:
import json import time import urllib.error import urllib.parse import urllib.request # The maps_key defined below isn't a valid Google Maps API key. # You need to get your own API key. # See https://developers.google.com/maps/documentation/timezone/get-api-key API_KEY = "YOUR_KEY_HERE" TIMEZONE_BASE_URL = "https://maps.googleapis.com/maps/api/timezone/json" def timezone(lat, lng, timestamp): # Join the parts of the URL together into one string. params = urllib.parse.urlencode( {"location": f"{lat},{lng}", "timestamp": timestamp, "key": API_KEY,} ) url = f"{TIMEZONE_BASE_URL}?{params}" current_delay = 0.1 # Set the initial retry delay to 100ms. max_delay = 5 # Set the maximum retry delay to 5 seconds. while True: try: # Get the API response. response = urllib.request.urlopen(url) except urllib.error.URLError: pass # Fall through to the retry loop. else: # If we didn't get an IOError then parse the result. result = json.load(response) if result["status"] == "OK": return result["timeZoneId"] elif result["status"] != "UNKNOWN_ERROR": # Many API errors cannot be fixed by a retry, e.g. INVALID_REQUEST or # ZERO_RESULTS. There is no point retrying these requests. raise Exception(result["error_message"]) if current_delay > max_delay: raise Exception("Too many retry attempts.") print("Waiting", current_delay, "seconds before retrying.") time.sleep(current_delay) current_delay *= 2 # Increase the delay each time we retry. if __name__ == "__main__": tz = timezone(39.6034810, -119.6822510, 1331161200) print(f"Timezone: {tz}")
आपको इस बात का भी ध्यान रखना चाहिए कि ऐप्लिकेशन कॉल में कोड को फिर से लोड करने की कोशिश न की जाए ऐसी चेन जो एक के बाद एक कई अनुरोधों पर ले जाती है.
सिंक किए गए अनुरोध
Google के एपीआई पर सिंक किए गए अनुरोधों की बड़ी संख्या, किसी डिस्ट्रिब्यूटेड अनुरोध की तरह दिख सकती है सेवा में रुकावट (डीडीओएस) का हमला, Google के इन्फ़्रास्ट्रक्चर पर हमला करता है और इसे अपने हिसाब से मैनेज किया जाना चाहिए. यहां की यात्रा पर हूं इससे बचने के लिए, आपको यह पक्का करना चाहिए कि एपीआई अनुरोध सिंक नहीं किए गए हैं के बीच फ़र्क़ कर सकते हैं.
उदाहरण के लिए, ऐसे ऐप्लिकेशन पर विचार करें जो मौजूदा टाइम ज़ोन का समय दिखाता है. यह ऐप्लिकेशन, क्लाइंट के ऑपरेटिंग सिस्टम में ऐसा अलार्म सेट करेगा जो उसे चालू करेगा मिनट की शुरुआत में बदलाव करने के लिए कहें, ताकि दिखाए गए समय को अपडेट किया जा सके. ऐप्लिकेशन को यह करना चाहिए उस अलार्म से जुड़ी प्रोसेसिंग के तहत कोई एपीआई कॉल नहीं किया जा सकता.
किसी तय अलार्म के जवाब में एपीआई कॉल करना अच्छा नहीं है, क्योंकि इससे एपीआई कॉल समय के साथ सिंक होता है, न कि इन्हें समय के साथ बराबर शेयर किया जाएगा. ऐसा करने से खराब तरीके से डिज़ाइन किया गया कोई ऐप्लिकेशन, हर मिनट के शुरू में साठ गुना सामान्य स्तर पर ट्रैफ़िक.
इसके बजाय, एक दूसरा अलार्म यह भी हो सकता है कि वह बिना किसी तय क्रम के चुने गए समय पर सेट हो. जब यह दूसरा अलार्म सक्रिय करता है तो ऐप्लिकेशन किसी भी ऐसे एपीआई को कॉल करता है जिसकी उसे ज़रूरत होती है और नतीजे. जब ऐप्लिकेशन मिनट की शुरुआत में ही अपने डिसप्ले को अपडेट करना चाहता है, तब वह एपीआई को फिर से कॉल करने के बजाय, पहले से सेव किए गए नतीजों को देखें. इस तरीके से, एपीआई कॉल ये समय के साथ एक समान रहती हैं. इसके अलावा, एपीआई कॉल की वजह से डिसप्ले में रेंडर होने में देरी नहीं होती अपडेट किया जा रहा है.
मिनट की शुरुआत के अलावा, सिंक करने के अन्य सामान्य समय, आपको सावधान रहना चाहिए टारगेट करने के लिए नहीं का समय घंटे की शुरुआत में होता है और हर दिन की आधी रात को शुरू होता है.
जवाब प्रोसेस किए जा रहे हैं
इस सेक्शन में बताया गया है कि वेब सेवा से मिले जवाबों से, इन वैल्यू को डाइनैमिक तौर पर कैसे एक्सट्रैक्ट किया जा सकता है.
Google Maps की वेब सेवाएं ऐसे जवाब देती हैं जिन्हें भरना आसान होता है समझने में आसान है, लेकिन लोगों के लिए आसान नहीं है. क्वेरी करते समय, का इस्तेमाल करते हैं, तो हो सकता है कि आप कुछ सटीक वैल्यू. आम तौर पर, आपको वेब से मिले जवाबों को पार्स करना होगा और केवल उन मानों को एक्सट्रैक्ट करें जिनमें आपकी रुचि है.
पार्स करने की आपकी स्कीम, इस बात पर निर्भर करती है कि क्या आप लौट रहे हैं JSON में आउटपुट करता है. JSON रिस्पॉन्स, जो पहले से इस फ़ॉर्मैट में हो सकते हैं JavaScript ऑब्जेक्ट, JavaScript में ही प्रोसेस किए जा सकते हैं क्लाइंट-साइड पर.