Node.js में JavaScript पर HTTP क्लाइंट: सही तरीके से अनुरोध करना

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: Node.js में HTTP क्लाइंट की आवश्यकता क्यों है?

आधुनिक वेब डेवलपमेंट में बाहरी सेवाओं के साथ इंटरैक्शन के बिना काम नहीं चल सकता। चाहे वह सर्वर पर डेटा भेजना हो, मुद्रा दर प्राप्त करना हो, REST API के साथ काम करना हो या क्लाउड प्लेटफॉर्म के साथ एकीकरण करना हो — इन सबके लिए HTTP अनुरोध भेजने की क्षमता आवश्यक है। Node.js वातावरण में इसके लिए कई दृष्टिकोण हैं: बिल्ट-इन http मॉड्यूल से लेकर लोकप्रिय तृतीय-पक्ष लाइब्रेरी जैसे axios और नेटिव fetch तक।

इस लेख में, हम समझेंगे कि JavaScript (Node.js) पर HTTP क्लाइंट को सही तरीके से कैसे व्यवस्थित करें, विभिन्न कार्यों के लिए कौन से उपकरण चुनें और सामान्य गलतियों से कैसे बचें। आप सीखेंगे कि प्रतिक्रियाओं को कैसे संभालें, एसिंक्रोनसिटी को कैसे प्रबंधित करें और स्वच्छ, रखरखाव योग्य कोड कैसे लिखें।



Node.js में HTTP अनुरोध बनाने के मुख्य तरीके

Node.js डेवलपर को HTTP के साथ काम करने के लिए कई विकल्प प्रदान करता है। आइए तीन मुख्य विकल्पों पर विचार करें: बिल्ट-इन http मॉड्यूल, axios लाइब्रेरी और नेटिव fetch।



1. बिल्ट-इन मॉड्यूल http/https

सबसे निम्न-स्तरीय तरीका। यह अनुरोध पर पूर्ण नियंत्रण देता है, लेकिन अधिक कोड लिखने की आवश्यकता होती है। यह उन मामलों के लिए उपयुक्त है जहां निर्भरता को कम करना हो या गैर-मानक प्रोटोकॉल के साथ काम करना हो।

https मॉड्यूल का उपयोग करके GET अनुरोध का उदाहरण:

const https = require('https');

function getUsers() { return new Promise((resolve, reject) => { https.get('https://jsonplaceholder.typicode.com/users', (res) => { let data = ''; res.on('data', chunk => data += chunk); res.on('end', () => resolve(JSON.parse(data))); }).on('error', reject); });}

getUsers().then(users => console.log(users[0].name));

लाभ: कोई बाहरी निर्भरता नहीं, पूर्ण नियंत्रण।
नुकसान: भारी कोड, Promise में लपेटने की आवश्यकता, मैन्युअल स्ट्रीम प्रबंधन।



2. axios लाइब्रेरी

HTTP अनुरोधों के लिए सबसे लोकप्रिय लाइब्रेरी। यह ब्राउज़र और Node.js दोनों में काम करती है। यह Promise, इंटरसेप्टर, स्वचालित JSON पार्सिंग और अनुरोध रद्द करने का समर्थन करती है।

स्थापना:

npm install axios

axios के साथ POST अनुरोध का उदाहरण:

const axios = require('axios');

async function createPost() { try { const response = await axios.post('https://jsonplaceholder.typicode.com/posts', { title: 'JavaScript पर HTTP क्लाइंट', body: 'सही तरीके से अनुरोध करना', userId: 1 }); console.log('पोस्ट बनाया गया:', response.data); } catch (error) { console.error('त्रुटि:', error.message); }}

createPost();

लाभ: सरल API, स्वचालित JSON प्रसंस्करण, इंटरसेप्टर, टाइमआउट।
नुकसान: स्थापना आवश्यक, लाइब्रेरी का आकार (~14 KB gzip)।



3. नेटिव fetch (Node.js 18+)

Node.js संस्करण 18 से शुरू करके, fetch एक बिल्ट-इन फ़ंक्शन बन गया है। यह ब्राउज़र और सर्वर के बीच कोड को एकीकृत करता है। हालांकि, Node.js के पुराने संस्करणों में पॉलीफिल की आवश्यकता होगी।

fetch और async/await के साथ उदाहरण:

async function getUser(id) {  const response = await fetch(`https://jsonplaceholder.typicode.com/users/${id}`);  if (!response.ok) {    throw new Error(`HTTP त्रुटि! स्थिति: ${response.status}`);  }  const user = await response.json();  return user;}

getUser(1).then(user => console.log(user.name));

लाभ: नेटिव, स्थापना की आवश्यकता नहीं, आधुनिक API।
नुकसान: Node.js < 18 में समर्थित नहीं, कोई बिल्ट-इन टाइमआउट नहीं, मैन्युअल स्थिति जांच आवश्यक।



त्रुटियों और टाइमआउट का सही प्रबंधन

HTTP क्लाइंट के साथ काम करते समय सबसे आम समस्याओं में से एक त्रुटि प्रबंधन को अनदेखा करना है। नेटवर्क अविश्वसनीय है, सर्वर 500 त्रुटि के साथ उत्तर दे सकता है या उत्तर नहीं दे सकता है।

ब्लॉग

पुस्तक अनुशंसाएँ