सीमा तक पहुँचने से पहले अपनी कुंजी के उपयोग पर नज़र रखें
काम के साथ-साथ अपने कोटा हेडर देखते रहने से पता चलता है कि कब सीमा करीब आ रही है, किसी अनुरोध के असल में अस्वीकार होने से काफ़ी पहले।
ज़्यादातर उपयोगों के लिए, जिनमें पर्सनलाइज़ेशन, डिफ़ॉल्ट और एनालिटिक्स शामिल हैं, जियोलोकेशन सर्वर पर होनी चाहिए, क्योंकि इसके लिए न विज़िटर के ब्राउज़र के सहयोग की ज़रूरत है और न क्लाइंट साइड पर चलने वाली किसी स्क्रिप्ट की।
भाषा चाहे जो हो, कॉल वही साधारण HTTP GET अनुरोध है जो /v1/ip पर जाता है, और कुंजी हेडर के रूप में भेजी जाती है।
GET /v1/ip?ip=203.0.113.60
X-API-Key: mg_live_examplekey123{
"status": "ok",
"ip": "203.0.113.60",
"version": 4,
"found": true,
"country": "Netherlands",
"country_code": "NL",
"region": "North Holland",
"city": "Amsterdam",
"postcode": "1012",
"lat": 52.3702,
"lon": 4.8952,
"timezone": "Europe/Amsterdam",
"asn": 3344,
"org": "Example ISP"
}अनुरोध से विज़िटर का अपना पता लें, आमतौर पर $_SERVER['REMOTE_ADDR'], और उसे ip पैरामीटर के रूप में भेजें, फिर आपके PHP सेटअप में पहले से इस्तेमाल हो रहे HTTP क्लाइंट से HTTP अनुरोध करें, चाहे curl हो या उसके ऊपर बनी कोई लाइब्रेरी। चूँकि यह साइट खुद बिना क्लाइंट-साइड JavaScript के सर्वर-रेंडर किए गए PHP से बनी है, इसलिए यह पैटर्न पेज के सामान्य रेंडरिंग फ़्लो में स्वाभाविक रूप से फ़िट होता है, और पेज का मार्कअप बनने से पहले ही लोकेशन डेटा उपलब्ध रहता है।
आने वाले request ऑब्जेक्ट से विज़िटर का पता पढ़ें, आमतौर पर req.socket.remoteAddress से, या अगर आपके ऐप के आगे कोई रिवर्स प्रॉक्सी है तो उसके द्वारा सेट किए गए X-Forwarded-For जैसे हेडर से, और रिस्पॉन्स रेंडर करने से पहले अपनी पसंद के HTTP क्लाइंट से वही GET अनुरोध करें।
अगर आपका ऐप किसी लोड बैलेंसर या रिवर्स प्रॉक्सी के पीछे है, तो आपका कोड सीधे जो पता देखता है वह विज़िटर का नहीं, प्रॉक्सी का अपना पता हो सकता है। आपकी प्रॉक्सी जो भी फ़ॉरवर्डेड-एड्रेस हेडर सेट करती है उसे जाँचें और वह पता स्पष्ट रूप से ip पैरामीटर के रूप में भेजें, कनेक्शन के कच्चे रिमोट पते पर निर्भर न रहें, वरना विज़िटर के बजाय आपके अपने इंफ़्रास्ट्रक्चर की जियोलोकेशन हो जाएगी।
लुकअप की लागत वही एक अनुरोध है, चाहे उसे PHP से कॉल किया जाए या Node से या किसी अन्य बैकएंड भाषा से, क्योंकि लागत API तक पहुँचने वाले अनुरोध से जुड़ी है, इस बात से नहीं कि कॉल किसने की। हर पेज पर लुकअप दोहराने से बचने के लिए किसी भी भाषा में परिणाम को सेशन की अवधि तक कैश करें।
सर्वर-साइड जियोलोकेशन बैकएंड भाषा चाहे जो हो, एक ही तरह काम करती है: विज़िटर के पते के साथ एक HTTP कॉल। ऑथेंटिकेशन के सभी विकल्प ऑथेंटिकेशन दस्तावेज़ में हैं, और फ़ील्ड की सूची IPv4 लुकअप दस्तावेज़ में है।