जावास्क्रिप्ट (Node.js) के लिए HTTP-क्लाइंट: नेटवर्क कार्य के लिए शीर्ष लाइब्रेरीज़
\n\nआधुनिक Node.js वेब डेवलपमेंट में, HTTP अनुरोध भेजना सबसे सामान्य कार्यों में से एक है। चाहे वह REST API को कॉल करना हो, फ़ाइलें डाउनलोड करना हो, या माइक्रोसर्विसेज़ के साथ इंटरैक्ट करना हो - एक विश्वसनीय HTTP-क्लाइंट के बिना काम नहीं चल सकता। इस लेख में, हम जावास्क्रिप्ट (Node.js) के लिए चार सर्वश्रेष्ठ लाइब्रेरीज़: Axios, Got, node-fetch और undici का विस्तार से विश्लेषण करेंगे। आप उनकी विशेषताओं, प्रदर्शन के बारे में जानेंगे और तैयार कोड उदाहरण प्राप्त करेंगे।
\n\n1. Axios — सार्वभौमिक मानक
\nAxios Node.js और ब्राउज़रों के लिए सबसे लोकप्रिय HTTP-क्लाइंट है। यह Promise पर आधारित है और इंटरसेप्टर, स्वचालित JSON पार्सिंग, CSRF सुरक्षा और अनुरोध रद्द करने का समर्थन करता है।
\n\nस्थापना:
\nnpm install axios\n\nGET अनुरोध का उदाहरण:
\nconst axios = require('axios');\n\nasync function getUser(id) {\n try {\n const response = await axios.get(`https://api.example.com/users/${id}`);\n console.log(response.data);\n } catch (error) {\n console.error('त्रुटि:', error.message);\n }\n}\n\ngetUser(1);\n\nहेडर के साथ POST का उदाहरण:
\nconst axios = require('axios');\n\nconst data = { name: 'Alice', role: 'developer' };\n\naxios.post('https://api.example.com/users', data, {\n headers: { 'Content-Type': 'application/json' }\n}).then(res => console.log(res.status));\n\nलाभ: सरलता, व्यापक पारिस्थितिकी तंत्र, अपलोड प्रगति के लिए समर्थन।
\nनुकसान: पैकेज का आकार (~100 KB), सरल कार्यों के लिए अतिरेक।
\n\n2. Got — तेज़ और कार्यात्मक
\nGot एक हल्का HTTP-क्लाइंट है जिसमें समृद्ध API है। यह स्ट्रीमिंग, कैशिंग, पुनः प्रयास का समर्थन करता है और Axios से तेज़ काम करता है।
\n\nस्थापना:
\nnpm install got\n\nस्ट्रीम और त्रुटि प्रबंधन के साथ उदाहरण:
\nconst got = require('got');\nconst fs = require('fs');\n\nasync function downloadFile(url, outputPath) {\n try {\n const stream = got.stream(url);\n const fileStream = fs.createWriteStream(outputPath);\n stream.pipe(fileStream);\n\n await new Promise((resolve, reject) => {\n stream.on('end', resolve);\n stream.on('error', reject);\n });\n console.log('फ़ाइल डाउनलोड हुई');\n } catch (error) {\n console.error('डाउनलोड त्रुटि:', error.message);\n }\n}\n\ndownloadFile('https://example.com/file.zip', './file.zip');\n\nपुनः प्रयास के साथ उदाहरण:
\nconst got = require('got');\n\ngot('https://api.example.com/data', {\n retry: { limit: 3, methods: ['GET'] }\n}).then(response => console.log(response.body));\n\nलाभ: छोटा आकार, गति, अंतर्निहित पुनः प्रयास।
\nनुकसान: शुरुआती लोगों के लिए कम सहज API।
\n\n3. node-fetch — ब्राउज़र से परिचित सिंटैक्स
\nnode-fetch Node.js के लिए ब्राउज़र Fetch API का पोर्ट है। यह आदर्श है यदि आप ब्राउज़र में fetch के आदी हैं और एक समान कोड चाहते हैं।
स्थापना:
\nnpm install node-fetch\n\nasync/await के साथ उदाहरण:
\nconst fetch = require('node-fetch');\n\nasync function getPosts() {\n const response = await fetch('https://jsonplaceholder.typicode.com/posts/1');\n if (!response.ok) throw new Error('HTTP त्रुटि ' + response.status);\n const data = await response.json();\n console.log(data.title);\n}\n\ngetPosts();\n\nFormData भेजने का उदाहरण:
\nconst fetch = require('node-fetch');\nconst FormData = require('form-data');\n\nconst form = new FormData();\nform.append('file', fs.createReadStream('./photo.jpg'));\n\