अध्याय 5: HTTP मॉड्यूल (Node.js HTTP Module)

अध्याय 5: HTTP मॉड्यूल (Node.js HTTP Module)

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

HTTP मॉड्यूल का उपयोग करते हुए, आप विभिन्न HTTP मेथड्स (जैसे GET, POST, PUT, DELETE) को आसानी से हैंडल कर सकते हैं और कस्टम रूटिंग सेटअप कर सकते हैं। यह अध्याय आपको एक बेसिक HTTP सर्वर बनाना, अनुरोध और प्रतिक्रियाओं को प्रबंधित करना, और रूटिंग को सही ढंग से सेटअप करने का तरीका सिखाएगा।

आइए इस अध्याय में HTTP मॉड्यूल की गहराई से जानकारी प्राप्त करें और देखें कि Node.js में वेब सर्वर कैसे तैयार किया जाता है।

एक बेसिक HTTP सर्वर बनाना (Creating a Basic HTTP Server)

Node.js के HTTP मॉड्यूल का उपयोग करके एक बेसिक HTTP सर्वर बनाना बहुत आसान है। HTTP सर्वर वेब से आने वाले अनुरोधों को हैंडल करता है और उनके लिए उपयुक्त प्रतिक्रियाएं भेजता है। इस सेक्शन में, हम देखेंगे कि कैसे आप कुछ सरल चरणों में अपना HTTP सर्वर बना सकते हैं।

चरण 1: HTTP मॉड्यूल इंपोर्ट करना (Import the HTTP Module)

सबसे पहले, आपको HTTP मॉड्यूल को इंपोर्ट करना होगा ताकि आप इसका उपयोग कर सकें। इसके लिए, आप require() फंक्शन का उपयोग करेंगे:

const http = require('http');

चरण 2: सर्वर बनाना (Create a Server)

अब हम http.createServer() फंक्शन का उपयोग करके एक सर्वर बनाएंगे। यह फंक्शन एक कॉलबैक फंक्शन को लेता है, जो हर बार जब भी सर्वर पर कोई HTTP अनुरोध आता है, तब चलाया जाता है। यह फंक्शन अनुरोध (req) और प्रतिक्रिया (res) ऑब्जेक्ट्स को पास करता है।

const server = http.createServer((req, res) => {
    res.statusCode = 200; // सफल अनुरोध के लिए स्थिति कोड सेट करें
    res.setHeader('Content-Type', 'text/plain'); // सामग्री का प्रकार सेट करें
    res.end('Hello, World!\n'); // प्रतिक्रिया में संदेश भेजें
});

यहां, हमने प्रतिक्रिया की स्थिति को 200 (सफल) सेट किया, हेडर में सामग्री के प्रकार को text/plain के रूप में सेट किया, और प्रतिक्रिया के रूप में “Hello, World!” संदेश भेजा।

चरण 3: सर्वर को पोर्ट पर चलाना (Listen to a Port)

अब हम सर्वर को किसी विशेष पोर्ट पर चलाने के लिए server.listen() फंक्शन का उपयोग करेंगे। आमतौर पर HTTP सर्वर के लिए पोर्ट 3000 या 8080 उपयोग किए जाते हैं।

const port = 3000;
server.listen(port, () => {
    console.log(`Server running at http://localhost:${port}/`);
});

यह कोड सर्वर को पोर्ट 3000 पर चलाने के लिए सेट करता है और एक संदेश कंसोल में प्रिंट करता है जो सर्वर के शुरू होने की पुष्टि करता है।

पूर्ण कोड (Complete Code)

const http = require('http');

// सर्वर बनाना
const server = http.createServer((req, res) => {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Hello, World!\n');
});

// सर्वर को पोर्ट 3000 पर चलाना
const port = 3000;
server.listen(port, () => {
    console.log(`Server running at http://localhost:${port}/`);
});

सर्वर चलाना (Running the Server)

  1. इस कोड को server.js नामक एक फाइल में सेव करें।
  2. टर्मिनल या कमांड प्रॉम्प्ट खोलें और उस डायरेक्टरी में जाएं जहां आपने फाइल सेव की है।
  3. सर्वर को चलाने के लिए निम्नलिखित कमांड टाइप करें:
    node server.js
    

     

आपको कंसोल में यह संदेश दिखेगा:
Server running at http://localhost:3000/

अब, अपने वेब ब्राउज़र में http://localhost:3000/ पर जाएं। आपको ब्राउज़र में “Hello, World!” दिखाई देगा, जो कि आपके HTTP सर्वर की प्रतिक्रिया है।

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

HTTP अनुरोध और उत्तर को संभालना (Handling HTTP Requests and Responses)

Node.js में HTTP मॉड्यूल का उपयोग करके, आप आसानी से HTTP अनुरोधों (Requests) को प्राप्त कर सकते हैं और उनके लिए उपयुक्त उत्तर (Responses) भेज सकते हैं। जब कोई क्लाइंट (जैसे कि ब्राउज़र) सर्वर पर अनुरोध भेजता है, तो सर्वर को उस अनुरोध को संभालने और सही उत्तर देने की आवश्यकता होती है। इस सेक्शन में, हम देखेंगे कि HTTP अनुरोधों और उत्तरों को कैसे संभाला जाता है।

1. HTTP अनुरोध (HTTP Requests)

जब कोई क्लाइंट HTTP सर्वर से कनेक्ट होता है और अनुरोध करता है, तो सर्वर को उस अनुरोध को पढ़ना और उसकी जानकारी निकालना होता है। HTTP अनुरोध में निम्नलिखित प्रमुख चीज़ें होती हैं:

  • URL: क्लाइंट द्वारा अनुरोधित संसाधन का पथ।
  • HTTP मेथड: जैसे कि GET, POST, PUT, DELETE आदि, जो बताता है कि अनुरोध का उद्देश्य क्या है।
  • हेडर्स (Headers): अतिरिक्त जानकारी जैसे कंटेंट-टाइप, ऑथेंटिकेशन टोकन आदि।
  • बॉडी (Body): POST या PUT अनुरोधों के लिए डेटा, जैसे कि फॉर्म डेटा या JSON ऑब्जेक्ट।

2. HTTP उत्तर (HTTP Responses)

जब सर्वर HTTP अनुरोध को प्राप्त करता है, तो उसे HTTP उत्तर भेजने की आवश्यकता होती है। HTTP उत्तर में निम्नलिखित प्रमुख चीज़ें होती हैं:

  • स्टेटस कोड (Status Code): सर्वर द्वारा भेजी गई प्रतिक्रिया की स्थिति। जैसे, 200 (सफल), 404 (नहीं मिला), 500 (सर्वर त्रुटि) आदि।
  • हेडर्स (Headers): अतिरिक्त जानकारी जैसे कि कंटेंट-टाइप, कैशिंग निर्देश आदि।
  • बॉडी (Body): अनुरोध के उत्तर में भेजी गई सामग्री, जैसे HTML, JSON, या टेक्स्ट।

3. उदाहरण: GET अनुरोध को संभालना (Handling a GET Request)

GET अनुरोध का उपयोग तब किया जाता है जब क्लाइंट सर्वर से डेटा प्राप्त करना चाहता है। नीचे दिए गए उदाहरण में, हम GET अनुरोध को पहचानते हैं और एक साधारण प्रतिक्रिया भेजते हैं:

const http = require('http');

const server = http.createServer((req, res) => {
    if (req.method === 'GET') {
        res.statusCode = 200;
        res.setHeader('Content-Type', 'text/plain');
        res.end('This is a GET request response.');
    } else {
        res.statusCode = 405; // Method Not Allowed
        res.end('Only GET requests are allowed.');
    }
});

server.listen(3000, () => {
    console.log('Server running at http://localhost:3000/');
});

यह कोड एक HTTP सर्वर बनाता है जो GET अनुरोधों का जवाब देता है और अन्य HTTP मेथड्स (जैसे POST) को अस्वीकार कर देता है।

4. उदाहरण: POST अनुरोध को संभालना (Handling a POST Request)

POST अनुरोध का उपयोग तब किया जाता है जब क्लाइंट सर्वर को डेटा भेजना चाहता है, जैसे कि फॉर्म डेटा या JSON। यहां हम देखेंगे कि POST अनुरोध से डेटा कैसे पढ़ा जाता है:

const http = require('http');

const server = http.createServer((req, res) => {
    if (req.method === 'GET' && req.url === '/about') {
        res.statusCode = 200;
        res.setHeader('Content-Type', 'text/plain');
        res.end('This is the About page.');
    } else if (req.method === 'GET' && req.url === '/') {
        res.statusCode = 200;
        res.setHeader('Content-Type', 'text/plain');
        res.end('Welcome to the Homepage.');
    } else {
        res.statusCode = 404;
        res.end('Page not found.');
    }
});

server.listen(3000, () => {
    console.log('Server running at http://localhost:3000/');
});

यह कोड विभिन्न URL के लिए अलग-अलग प्रतिक्रिया देता है। /about पर जाने पर “This is the About page” और होम पेज पर जाने पर “Welcome to the Homepage” संदेश प्राप्त होगा।

6. अनुरोध हेडर्स पढ़ना (Reading Request Headers)

आप अनुरोध के हेडर्स को भी पढ़ सकते हैं, जो क्लाइंट द्वारा भेजी गई अतिरिक्त जानकारी प्रदान करते हैं:

const http = require('http');

const server = http.createServer((req, res) => {
    console.log('Request Headers:', req.headers);

    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Headers received, check console.');
});

server.listen(3000, () => {
    console.log('Server running at http://localhost:3000/');
});

यह उदाहरण सभी अनुरोध हेडर्स को कंसोल में प्रिंट करेगा और प्रतिक्रिया में एक सरल संदेश भेजेगा।

HTTP अनुरोधों और उत्तरों को समझना Node.js में एक HTTP सर्वर के संचालन का महत्वपूर्ण हिस्सा है। HTTP अनुरोधों को सही ढंग से संभालने से आप अपने सर्वर को विभिन्न प्रकार की जरूरतों के लिए कस्टमाइज़ कर सकते हैं। GET और POST जैसे अनुरोधों के बीच अंतर करना, URL का उपयोग करके रूटिंग सेटअप करना, और अनुरोध हेडर्स को पढ़ना आपको सर्वर साइड पर बेहतर नियंत्रण प्रदान करता है।

Node.js में रूटिंग (Routing in Node.js)

रूटिंग (Routing) एक ऐसी प्रक्रिया है जिसके माध्यम से HTTP अनुरोधों को उनके अनुरोधित URL और HTTP मेथड्स के आधार पर अलग-अलग हैंडलर्स (Handlers) को भेजा जाता है। यह एक वेबसाइट या वेब एप्लिकेशन में विभिन्न पेजों या कार्यक्षमताओं को संभालने का तरीका है। Node.js में, आप HTTP मॉड्यूल का उपयोग करके सरल रूटिंग सेटअप कर सकते हैं, जहां आप विभिन्न पथों (URL paths) और HTTP मेथड्स (जैसे GET, POST) के अनुरूप प्रतिक्रिया भेजते हैं।

इस सेक्शन में, हम देखेंगे कि Node.js में रूटिंग कैसे काम करती है और विभिन्न पथों के लिए अलग-अलग हैंडलर्स कैसे सेट किए जाते हैं।

1. रूटिंग का परिचय (Introduction to Routing)

Node.js में रूटिंग का मतलब है कि जब कोई क्लाइंट एक विशेष URL के लिए अनुरोध करता है, तो आप उस अनुरोध को पहचानते हैं और उचित प्रतिक्रिया भेजते हैं। उदाहरण के लिए, /about पेज के लिए एक प्रतिक्रिया और /contact पेज के लिए एक अलग प्रतिक्रिया भेजी जा सकती है।

2. एक सरल रूटिंग उदाहरण (Simple Routing Example)

नीचे दिया गया उदाहरण दिखाता है कि कैसे विभिन्न URL और HTTP मेथड्स के लिए अलग-अलग प्रतिक्रियाएं भेजी जा सकती हैं:

const http = require('http');

const server = http.createServer((req, res) => {
    // रूटिंग के लिए URL और HTTP मेथड्स की जांच करें
    if (req.method === 'GET' && req.url === '/') {
        res.statusCode = 200;
        res.setHeader('Content-Type', 'text/plain');
        res.end('Welcome to the Homepage!');
    } else if (req.method === 'GET' && req.url === '/about') {
        res.statusCode = 200;
        res.setHeader('Content-Type', 'text/plain');
        res.end('This is the About page.');
    } else if (req.method === 'POST' && req.url === '/contact') {
        res.statusCode = 200;
        res.setHeader('Content-Type', 'text/plain');
        res.end('Form submitted successfully.');
    } else {
        res.statusCode = 404;
        res.setHeader('Content-Type', 'text/plain');
        res.end('Page not found.');
    }
});

server.listen(3000, () => {
    console.log('Server running at http://localhost:3000/');
});

इस कोड में:

  • GET / के लिए “Welcome to the Homepage!” प्रतिक्रिया भेजी जाती है।
  • GET /about के लिए “This is the About page” प्रतिक्रिया भेजी जाती है।
  • POST /contact के लिए “Form submitted successfully” प्रतिक्रिया भेजी जाती है।
  • किसी भी अन्य पथ पर 404 (Page not found) प्रतिक्रिया भेजी जाती है।

3. URL पैरामीटर्स का उपयोग करना (Using URL Parameters)

आप URL में आने वाले पैरामीटर्स को भी एक्सेस कर सकते हैं। उदाहरण के लिए, /user/123 जैसे URL से उपयोगकर्ता आईडी को पकड़ सकते हैं। यहां एक उदाहरण है:

const http = require('http');

const server = http.createServer((req, res) => {
    const urlParts = req.url.split('/');

    if (req.method === 'GET' && urlParts[1] === 'user' && urlParts[2]) {
        const userId = urlParts[2];
        res.statusCode = 200;
        res.setHeader('Content-Type', 'text/plain');
        res.end(`User ID: ${userId}`);
    } else {
        res.statusCode = 404;
        res.end('Page not found.');
    }
});

server.listen(3000, () => {
    console.log('Server running at http://localhost:3000/');
});

इस उदाहरण में, /user/123 जैसे URL को पहचान कर User ID: 123 की प्रतिक्रिया भेजी जाती है।

4. रूटिंग के लिए क्वेरी स्ट्रिंग का उपयोग (Using Query Strings for Routing)

आप URL में मौजूद क्वेरी स्ट्रिंग्स को भी एक्सेस कर सकते हैं, जो अनुरोध में अधिक जानकारी प्रदान करती हैं। उदाहरण के लिए:

const http = require('http');
const url = require('url');

const server = http.createServer((req, res) => {
    const parsedUrl = url.parse(req.url, true);
    const query = parsedUrl.query;

    if (req.method === 'GET' && parsedUrl.pathname === '/search') {
        res.statusCode = 200;
        res.setHeader('Content-Type', 'text/plain');
        res.end(`You searched for: ${query.q}`);
    } else {
        res.statusCode = 404;
        res.end('Page not found.');
    }
});

server.listen(3000, () => {
    console.log('Server running at http://localhost:3000/');
});

यह उदाहरण /search?q=nodejs जैसे URL से क्वेरी स्ट्रिंग (q=nodejs) को पकड़ता है और उसे प्रतिक्रिया में भेजता है।

5. रूटिंग के लिए एक मॉड्यूलर दृष्टिकोण (Modular Approach to Routing)

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

Express.js में रूटिंग का एक सरल उदाहरण (Simple Example of Routing in Express.js)

Express.js एक लोकप्रिय Node.js फ्रेमवर्क है, जो रूटिंग को सरल और साफ बनाता है:

const express = require('express');
const app = express();

// होमपेज के लिए रूट
app.get('/', (req, res) => {
    res.send('Welcome to the Homepage!');
});

// अबाउट पेज के लिए रूट
app.get('/about', (req, res) => {
    res.send('This is the About page.');
});

// कॉन्टैक्ट फॉर्म के लिए POST रूट
app.post('/contact', (req, res) => {
    res.send('Form submitted successfully.');
});

// सर्वर को पोर्ट 3000 पर चलाना
app.listen(3000, () => {
    console.log('Server running at http://localhost:3000/');
});

Express.js का उपयोग करते समय, रूटिंग को सेटअप करना और हैंडल करना बहुत आसान हो जाता है। इससे आपको अधिक क्लीन और मॉड्यूलर एप्लिकेशन बनाने में मदद मिलती है।

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



Table of Contents

Index