लोड हो रहा है...

सिंपल रूटिंग

Node.js में सिंपल रूटिंग HTTP अनुरोधों को विशिष्ट हैंडलर्स तक मार्गदर्शित करने की प्रक्रिया है, जो URL पथ और HTTP मेथड पर आधारित होती है। यह किसी भी वेब सर्वर, API या माइक्रोसर्विस आर्किटेक्चर का मूलभूत हिस्सा है। सिंपल रूटिंग के माध्यम से, डेवलपर्स कोड को व्यवस्थित, पठनीय और बनाए रखने योग्य बना सकते हैं। यह सुनिश्चित करता है कि नए एंडपॉइंट जोड़ना, अनुरोधों को डिबग करना और सुरक्षा या लॉगिंग जैसी अतिरिक्त कार्यक्षमताओं को इंटीग्रेट करना सरल हो।
Node.js में सिंपल रूटिंग का उपयोग तब किया जाता है जब आपको GET, POST या अन्य HTTP मेथड अनुरोधों के लिए अलग-अलग प्रतिक्रिया लॉजिक लागू करना हो। यह अवधारणा Node.js की मूलभूत समझ जैसे असिंक्रोनस इवेंट हैंडलिंग, डेटा स्ट्रक्चर, एल्गोरिदम और ऑब्जेक्ट-ओरिएंटेड प्रिंसिपल्स के साथ गहराई से जुड़ी है। इस ट्यूटोरियल में, पाठक सीखेंगे कि कैसे GET और POST रूट बनाए जाएं, अनुरोध डेटा को सुरक्षित रूप से प्रोसेस किया जाए, उचित HTTP स्टेटस कोड के साथ उत्तर भेजा जाए और आम गलतियों से बचा जाए।
सिंपल रूटिंग को समझना डेवलपर्स को मापनीय, सुरक्षित और स्केलेबल Node.js एप्लिकेशन बनाने में मदद करता है और यह सॉफ्टवेयर आर्किटेक्चर के व्यापक संदर्भ में एक महत्वपूर्ण कौशल है।

मूल उदाहरण

text
TEXT Code
const http = require('http');
const url = require('url');

function handleRequest(req, res) {
const parsedUrl = url.parse(req.url, true);
const path = parsedUrl.pathname;

res.setHeader('Content-Type', 'application/json');

if (req.method === 'GET' && path === '/hello') {
res.statusCode = 200;
res.end(JSON.stringify({ message: 'Node.js में आपका स्वागत है!' }));
} else if (req.method === 'POST' && path === '/data') {
let body = '';
req.on('data', chunk => {
body += chunk.toString();
});
req.on('end', () => {
res.statusCode = 200;
res.end(JSON.stringify({ received: JSON.parse(body) }));
});
} else {
res.statusCode = 404;
res.end(JSON.stringify({ error: 'पृष्ठ नहीं मिला' }));
}

}

const server = http.createServer(handleRequest);

server.listen(3000, () => {
console.log('सर्वर [http://localhost:3000](http://localhost:3000) पर चल रहा है');
});

इस उदाहरण में, Node.js का http मॉड्यूल सर्वर बनाने के लिए और url मॉड्यूल URL को पार्स करने के लिए इस्तेमाल किया गया है। handleRequest फ़ंक्शन हर HTTP अनुरोध पर कॉल होता है। url.parse का उपयोग कर अनुरोधित पथ निकाला जाता है और उसे परिभाषित रूट्स के साथ मिलाया जाता है। req.method GET और POST अनुरोधों में अंतर करता है।
GET /hello के लिए, JSON प्रारूप में स्वागत संदेश लौटाया जाता है। POST /data रूट डेटा को असिंक्रोनस रूप से req.on('data') और req.on('end') इवेंट्स के माध्यम से प्राप्त करता है, JSON में पार्स करता है और वापस भेजता है। अन्य सभी पथों के लिए 404 त्रुटि लौटाई जाती है। यह उदाहरण असिंक्रोनस प्रोग्रामिंग, डेटा संरचना और सुरक्षित डेटा प्रोसेसिंग के साथ Node.js रूटिंग की बुनियादी अवधारणाओं को प्रदर्शित करता है।

व्यावहारिक उदाहरण

text
TEXT Code
const http = require('http');
const url = require('url');

const dataStore = [];

class Router {
constructor() {
this.routes = {};
}

register(method, path, handler) {
if (!this.routes[method]) {
this.routes[method] = {};
}
this.routes[method][path] = handler;
}

handle(req, res) {
const parsedUrl = url.parse(req.url, true);
const path = parsedUrl.pathname;
const method = req.method;

const routeHandler = this.routes[method] && this.routes[method][path];

if (routeHandler) {
routeHandler(req, res);
} else {
res.statusCode = 404;
res.end(JSON.stringify({ error: 'रूट नहीं मिला' }));
}
}

}

const router = new Router();

router.register('GET', '/items', (req, res) => {
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify({ items: dataStore }));
});

router.register('POST', '/items', (req, res) => {
let body = '';
req.on('data', chunk => body += chunk.toString());
req.on('end', () => {
try {
const item = JSON.parse(body);
dataStore.push(item);
res.statusCode = 201;
res.end(JSON.stringify({ message: 'नया आइटम जोड़ा गया', item }));
} catch (err) {
res.statusCode = 400;
res.end(JSON.stringify({ error: 'अमान्य JSON फॉर्मेट' }));
}
});
});

const server = http.createServer((req, res) => router.handle(req, res));

server.listen(3000, () => console.log('सर्वर [http://localhost:3000](http://localhost:3000) पर चल रहा है'));

इस उन्नत उदाहरण में, Router क्लास रूटिंग को मॉड्यूलर और विस्तारित करने योग्य बनाती है। यह HTTP मेथड और पाथ के अनुसार हैंडलर्स को स्टोर और मैनेज करता है। handle फ़ंक्शन अनुरोध की जांच करता है, उपयुक्त हैंडलर को कॉल करता है और यदि रूट नहीं मिलता तो 404 त्रुटि लौटाता है। GET /items मौजूदा डेटा लौटाता है, जबकि POST /items नई आइटम जोड़ता है। try/catch असफल JSON पार्सिंग के समय सर्वर क्रैश से बचाता है। यह संरचना OOP, मॉड्यूलर विकास, असिंक्रोनस डेटा प्रोसेसिंग और सुरक्षित त्रुटि प्रबंधन को दर्शाती है।

सिंपल रूटिंग के लिए सर्वोत्तम प्रथाएँ: उचित Content-Type हेडर सेट करना, HTTP स्टेटस कोड का सही उपयोग, रूटिंग को मॉड्यूलर बनाने के लिए क्लास या एक्सटर्नल मॉड्यूल का उपयोग, try/catch में त्रुटि हैंडलिंग और असिंक्रोनस डेटा प्रोसेसिंग। सामान्य गलतियाँ: ग्लोबल वेरिएबल का उपयोग, Event त्रुटियों की अनदेखी, हार्डकोडेड पाथ या मेथड और इनपुट वेलिडेशन का अभाव।
Debugging के लिए Node.js टूल्स, लॉगिंग और मेमोरी मापन उपयोगी हैं। प्रदर्शन के लिए ब्लॉकिंग ऑपरेशंस कम करना, ऑब्जेक्ट्स और फंक्शन का पुन: उपयोग और इवेंट हैंडलिंग को कुशल बनाना जरूरी है। सुरक्षा के लिए क्लाइंट इनपुट वेलिडेशन, इनजेक्शन अटैक्स से बचाव और संवेदनशील जानकारी छुपाना आवश्यक है।

📊 संदर्भ तालिका

Node.js Element/Concept Description Usage Example
Router रूट्स को मैनेज और डिस्ट्रिब्यूट करने के लिए क्लास या ऑब्जेक्ट router.register('GET', '/path', handler)
req.method HTTP अनुरोध की मेथड (GET, POST, आदि) if (req.method === 'POST') {...}
req.on('data') रखने के लिए इवेंट डेटा पकड़ना req.on('data', chunk => {...})
res.end() उत्तर भेजना और अनुरोध समाप्त करना res.end(JSON.stringify({ message: 'पूर्ण'}))
statusCode HTTP उत्तर का स्टेटस कोड res.statusCode = 404
Content-Type HTTP उत्तर की सामग्री प्रकार res.setHeader('Content-Type', 'application/json')

सारांश और अगले कदम: सिंपल रूटिंग समझने से HTTP अनुरोधों को प्रबंधित करना, रूट और मेथड को व्यवस्थित करना, असिंक्रोनस डेटा संभालना और सुरक्षित उत्तर संरचना करना आसान होता है। मॉड्यूलराइजेशन और त्रुटि प्रबंधन स्केलेबल API और वेब एप्लिकेशन के लिए आधार बनाते हैं। अगले कदम में मिडलवेयर, ऑथेंटिकेशन और Express.js या Fastify जैसे फ्रेमवर्क का उपयोग करके जटिल रूटिंग पर काम करना शामिल है। प्रायोगिक अभ्यास और रूटिंग, डेटा हैंडलिंग और त्रुटि नियंत्रण मजबूत करने के लिए आवश्यक हैं। Node.js की आधिकारिक डाक्यूमेंटेशन, समुदाय उदाहरण और कोडिंग चैलेंज निरंतर सीखने के लिए महत्वपूर्ण संसाधन हैं।

🧠 अपने ज्ञान की परीक्षा करें

शुरू करने के लिए तैयार

अपने ज्ञान की परीक्षा करें

इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं

4
प्रश्न
🎯
70%
पास करने के लिए
♾️
समय
🔄
प्रयास

📝 निर्देश

  • हर प्रश्न को ध्यान से पढ़ें
  • हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
  • आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
  • आपकी प्रगति शीर्ष पर दिखाई जाएगी