← Back to HTML Course | Chapter 7: Advanced APIs & Features | Lesson 2 of 11

HTML Web APIs Overview

सिर्फ HTML मार्कअप से केवल स्टैटिक कंटेंट—हेडिंग्स, पैराग्राफ्स, फॉर्म्स—ही बताया जा सकता है। लेकिन मॉडर्न वेब पेज यूज़र की लोकेशन भी पूछ सकते हैं, विज़िट्स के बीच डेटा को लोकली सेव कर सकते हैं, स्क्रीन पर एलिमेंट्स को ड्रैग कर सकते हैं, बैकग्राउंड में भारी कंप्यूटेशन चला सकते हैं, और सर्वर से लाइव अपडेट पा सकते हैं। यह सब इसलिए संभव है क्योंकि ब्राउज़र्स HTML के साथ-साथ बिल्ट-इन JavaScript APIs का एक सेट भी उपलब्ध कराते हैं, जिनमें से हर एक को इस चैप्टर में अपने खुद के टॉपिक के रूप में कवर किया गया है।

Web API किसे कहते हैं

Web API, JavaScript ऑब्जेक्ट्स और मेथड्स का एक सेट होता है जिसे ब्राउज़र एक्सपोज़ करता है ताकि पेज सिर्फ static HTML से ज़्यादा कुछ कर सके -- डिवाइस की लोकेशन पढ़ना, पेज विज़िट्स के बीच डेटा सेव करना, या सर्वर से लाइव कनेक्शन खोलना, ये सब ऐसी चीज़ें हैं जो HTML और CSS अकेले नहीं कर सकते, और यही गैप ये APIs भरते हैं।

Note: Web APIs को ब्राउज़र द्वारा दिए गए ऐसे टूल्स समझें जिन्हें आपका JavaScript कॉल कर सकता है, न कि याद करने के लिए नए HTML टैग्स -- HTML वाला हिस्सा आमतौर पर सिर्फ वह बटन या एलिमेंट होता है जो API कॉल को ट्रिगर करता है।
Warning: हर ब्राउज़र हर Web API को समान रूप से सपोर्ट नहीं करता; प्रोडक्शन कोड में किसी API पर निर्भर होने से पहले हमेशा feature availability चेक करें (जैसे if (navigator.geolocation))।

उदाहरण: What Counts as a Web API

markup
<script>
  if (navigator.geolocation) {
    console.log('Geolocation API is available');
  }
</script>

इस चैप्टर में शामिल पाँच APIs

यह चैप्टर पाँच खास Web APIs को विस्तार से कवर करता है: Geolocation (यूज़र की फिज़िकल लोकेशन पढ़ना), Drag and Drop (यूज़र्स को माउस से पेज एलिमेंट्स ड्रैग करने देना), Web Storage (ब्राउज़र में विज़िट्स के बीच key-value डेटा सेव करना), Web Workers (बैकग्राउंड थ्रेड में JavaScript चलाना), और Server-Sent Events (सर्वर से लाइव, एक-तरफ़ा अपडेट्स की स्ट्रीम पाना)।

Note: अगर आप Web APIs में नए हैं तो इन पाँच टॉपिक्स को इसी क्रम में पढ़ें -- Workers और SSE की तरफ बढ़ने से पहले Geolocation और Web Storage सबसे आसान शुरुआती बिंदु हैं।
Warning: ये पाँचों APIs बिल्कुल अलग-अलग समस्याएं हल करते हैं; यह न मानें कि एक API (जैसे Web Storage) की समझ बिना उसका खुद का टॉपिक पढ़े दूसरे API (जैसे Web Workers) को समझने में सीधे काम आ जाएगी।

उदाहरण: The Five APIs Covered in This Chapter

markup
<!-- Topics covered: Geolocation, Drag and Drop, Web Storage, Web Workers, Server-Sent Events -->

परमिशन्स और यूज़र का भरोसा

इनमें से कई APIs -- खासकर Geolocation -- को कोई भी डेटा लौटाने से पहले ब्राउज़र को यूज़र से स्पष्ट परमिशन माँगनी पड़ती है, क्योंकि ये संवेदनशील जानकारी को छूते हैं।

कोई पेज चुपचाप यूज़र की लोकेशन नहीं पढ़ सकता; ब्राउज़र हमेशा पहले एक दिखने वाला परमिशन प्रॉम्प्ट दिखाता है, और यूज़र उसे मना कर सकता है।

Note: जब यूज़र किसी परमिशन प्रॉम्प्ट को मना कर दे, उसके लिए हमेशा एक फॉलबैक अनुभव डिज़ाइन करें -- कभी यह न मान लें कि कोई API कॉल सफल ही होगी।
Warning: पेज लोड होते ही, यूज़र के कोई एक्शन लिए बिना, बार-बार permission माँगना एक आम गलती है जिसकी वजह से यूज़र्स रिफ्लेक्स में prompt को deny कर देते हैं।

उदाहरण: Permissions and User Trust

markup
<button onclick="navigator.geolocation.getCurrentPosition(pos => console.log(pos))">
  Share My Location
</button>

Client-Side बनाम Server-Side ज़िम्मेदारियाँ

Web Storage और Drag and Drop पूरी तरह client-side हैं -- ये यूज़र के अपने ब्राउज़र में ही चलते और डेटा स्टोर करते हैं, इसमें कोई सर्वर शामिल नहीं होता।

दूसरी ओर, Server-Sent Events को एक ऐसे सर्वर के सहयोग की ज़रूरत होती है जो कनेक्शन को खुला रखे और उसके ज़रिए डेटा पुश करे, जिससे यह इस चैप्टर की इकलौती ऐसी API बनती है जो मैचिंग बैकएंड सपोर्ट पर निर्भर करती है।

Note: Server-Sent Events पर कोई फीचर बनाने से पहले पक्का कर लें कि आपका बैकएंड फ्रेमवर्क लंबे समय तक चलने वाला SSE कनेक्शन खुला रखने को सचमुच सपोर्ट करता है।
Warning: Web Storage से सेव किया गया डेटा सिर्फ उस खास डिवाइस के उस खास ब्राउज़र में रहता है—यह कभी भी अपने-आप सर्वर पर या किसी दूसरे डिवाइस पर उसी यूज़र के लिए सिंक नहीं होता।

उदाहरण: Client-Side vs Server-Side Responsibilities

markup
<script>
  localStorage.setItem('theme', 'dark');
  const events = new EventSource('/updates');
</script>

आगे क्या पढ़ें

इसके बाद आने वाले पाँचों टॉपिक्स में से हर एक किसी एक API में गहराई से जाता है: उसका सेटअप, उसके मेथड्स, आम गलतियाँ, और पूरे काम करने वाले उदाहरण।

Geolocation, Drag and Drop, Web Storage, Web Workers, और Server-Sent Events के डीटेल में जाने से पहले यह ओवरव्यू सिर्फ यह दिखाने के लिए है कि ये आपस में कैसे जुड़े हैं।

Note: अगर कभी आपको यह याद दिलाने की ज़रूरत पड़े कि कौन-सी API किस समस्या को हल करती है, तो सभी पाँच API टॉपिक्स तक जल्दी पहुँचने के लिए इस ओवरव्यू पेज को बुकमार्क कर लें।
Warning: इस overview की बेसिक्स समझे बिना सीधे किसी एडवांस्ड API टॉपिक (जैसे Web Workers) पर चले जाने से उसकी कुछ टर्मिनोलॉजी बिना समझाई हुई महसूस हो सकती है।

उदाहरण: Where to Go Next

markup
<!-- See the Geolocation, Drag and Drop, Web Storage, Web Workers, and SSE tutorials -->
Live Example
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.