Node.js क्रोम के v8 इंजन पर निर्मित एक ओपन-सोर्स जावास्क्रिप्ट रनटाइम है जो आपको ब्राउज़र के बाहर जावास्क्रिप्ट कोड चलाने की अनुमति देता है।

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

अधिकांश Node.js API सर्वर एक्सप्रेस या किसी अन्य ढांचे का उपयोग करते हैं। हालांकि, आप कुछ ही चरणों में बिना किसी ढांचे के एक साधारण Node.js API भी बना सकते हैं।

चरण 1: अपना विकास पर्यावरण स्थापित करना

एक प्रोजेक्ट डायरेक्टरी बनाएं और सीडी इसमें चलकर:

mkdir nodejs-api
सीडी नोडज-एपीआई

अगला, प्रारंभ करें NPM अपने प्रोजेक्ट में चलाकर:

npm init -y

इस सीआरयूडी एपीआई में मोंगोडीबी, एक नोएसक्यूएल डेटाबेस और इसके लोकप्रिय ओडीएम, नेवले के उपयोग की सुविधा होगी।

स्थापित करने के लिए निम्न आदेश चलाएँ नेवला:

NPM इंस्टॉल नेवला

अगला, एक बनाएं सर्वर.जेएस अपने प्रोजेक्ट की रूट डायरेक्टरी में फाइल करें और सर्वर बनाने के लिए नीचे कोड ब्लॉक जोड़ें:

स्थिरांक एचटीटीपी = ज़रूरत होना("एचटीटीपी");
स्थिरांक सर्वर = http.createServer ((req, res) => {});

सर्वर.सुनो (3000, () => {
सांत्वना देना।लकड़ी का लट्ठा(`सर्वर चल रहा है`);
});

instagram viewer

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

इसके बाद, यह http मॉड्यूल को कॉल करता है सर्वर बनाएं विधि जो सर्वर का एक उदाहरण बनाता है और देता है। सर्वर बनाएं विधि पैरामीटर के रूप में अनुरोध और प्रतिक्रिया ऑब्जेक्ट के साथ कॉलबैक फ़ंक्शन लेती है।

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

अंत में, नाम की दो निर्देशिकाएँ बनाएँ मार्गों तथा मॉडल आपकी परियोजना की मूल निर्देशिका में। मार्गों फ़ोल्डर में आपके एपीआई के लिए रूटिंग लॉजिक होगा, जबकि नमूना इसमें डेटाबेस से संबंधित सब कुछ होगा।

चरण 2: अपने एप्लिकेशन को डेटाबेस से कनेक्ट करना

में सर्वर.जेएस, आयात नेवला:

स्थिरांक नेवला = ज़रूरत होना("मोंगोज़");

बुलाएं जुडिये विधि चालू नेवला और अपने मोंगोडीबी यूआरआई को तर्क के रूप में पास करें:

नेवला.कनेक्ट ("मोंगोडीबी_यूआरआई")

चरण 3: एक एपीआई मॉडल बनाना

एक साधारण ब्लॉग एप्लिकेशन के लिए CRUD API बनाएं। अपने में मॉडल फ़ोल्डर, एक बनाएँ ब्लॉगमॉडल.जेएस फ़ाइल और अपनी फ़ाइल में निम्न कोड जोड़ें:

स्थिरांक नेवला = ज़रूरत होना("मोंगोज़");
स्थिरांक ब्लॉगस्कीमा = नेवला. स्कीमा({
शीर्षक: {
प्रकार: डोरी,
आवश्यक: [सच, "ब्लॉग का शीर्षक होना चाहिए"],
},
तन: {
प्रकार: डोरी,
आवश्यक: [सच, "ब्लॉग में एक बॉडी होनी चाहिए"],
},
});
मापांक.निर्यात = mongoose.model ("ब्लॉग", ब्लॉगस्केमा);

उपरोक्त कोड ब्लॉक दो गुणों के साथ एक नेवला मॉडल बनाता है और उन्हें एक MongoDB डेटाबेस में मैप करता है।

इस मॉडल में दोनों गुण हैं a डोरी के साथ टाइप करें आवश्यक करने के लिए सेट सच. साथ में त्रुटि संदेश प्रदर्शित होंगे यदि अनुरोध निकाय में कोई भी गुण नहीं है।

अंतिम पंक्ति कॉल करके एक नेवला मॉडल बनाती और निर्यात करती है नमूना विधि चालू नेवला मॉडल का नाम पास करें (ब्लॉग) पहले तर्क और एक स्कीमा के रूप में (ब्लॉगस्कीमा) दूसरे तर्क के रूप में।

चरण 4: अपने आवेदन में रूटिंग लागू करना

की सहायता के बिना एक्सप्रेस जैसे ढांचे, आपको अपने एपीआई के लिए किए गए प्रत्येक अनुरोध को संभालने के लिए मैन्युअल रूप से तर्क बनाना होगा।

सबसे पहले, एक बनाएं ब्लॉगरूट्स.जेएस अपने में फ़ाइल मार्गों फ़ोल्डर, फिर ब्लॉग मॉडल आयात करें:

स्थिरांक ब्लॉग = ज़रूरत होना("../मॉडल/ब्लॉगमॉडल");

अगला, एक अतुल्यकालिक बनाएं रूटर समारोह, पास अनुरोध तथा रेस पैरामीटर के रूप में, और फ़ंक्शन को निर्यात करें:

स्थिरांक राउटर = अतुल्यकालिकसमारोह (अनुरोध, पुनः) {};
मापांक.निर्यात = राउटर;

इस फ़ंक्शन में आपके सभी रूटिंग लॉजिक होंगे।

इसके बाद, आप रूटिंग लॉजिक रूट को रूट द्वारा लागू करेंगे।

मार्ग प्राप्त करें

नीचे दिए गए कोड ब्लॉक को अपने में जोड़ें रूटर को लागू करने के लिए कार्य प्राप्त को किए गए अनुरोधों के लिए रूट हैंडलर /api/blogs:

// प्राप्त करें: / एपीआई / ब्लॉग
अगर (req.url "/api/blogs"&& अनुरोध विधि "प्राप्त") {
// सभी ब्लॉग प्राप्त करें
स्थिरांक ब्लॉग = इंतजार ब्लॉग.ढूंढें ();

// समूह दर्जा कोड तथाविषय-प्रकार
res.writeHead (200, { "सामग्री प्रकार": "आवेदन/जेसन" });

// डेटा भेजें
रेस।समाप्त(JSON.stringify(ब्लॉग));
}

उपरोक्त कोड ब्लॉक की जाँच करता है यूआरएल तथा तरीका अनुरोध वस्तु के गुण। इसके बाद यह सभी ब्लॉगों को डेटाबेस से के माध्यम से प्राप्त करता है पाना नेवला मॉडल पर विधि (ब्लॉग).

अगला, यह कॉल करता है राइटहेड विधि चालू रेस, प्रतिक्रिया वस्तु। यह विधि तीन तर्क दिए गए प्रतिक्रिया शीर्षलेख भेजती है: एक स्थिति कोड, एक वैकल्पिक स्थिति संदेश, और शीर्षलेख। 200 स्थिति कोड एक सफल प्रतिक्रिया का प्रतिनिधित्व करता है और इस एपीआई कॉल के लिए सामग्री-प्रकार पर सेट है आवेदन/जेसन.

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

नीचे दिए गए कोड ब्लॉक को अपने में जोड़ें रूटर को लागू करने के लिए कार्य प्राप्त एकल संसाधन के लिए रूट हैंडलर:

// प्राप्त करें: / एपीआई / ब्लॉग /: आईडी
अगर (req.url.match(/\\/api\\/blogs\\/([0-9]+)/) && अनुरोध विधि "प्राप्त") {
प्रयत्न {
// यूआरएल से आईडी निकालें
कास्ट आईडी = req.url.split("/")[3];

// डीबी से ब्लॉग प्राप्त करें
स्थिरांक ब्लॉग = इंतजार Blog.findById (आईडी);

अगर (ब्लॉग) {
res.writeHead (200, { "सामग्री प्रकार": "आवेदन/जेसन" });
रेस।समाप्त(JSON.stringify(ब्लॉग));
} वरना {
फेंकनानयागलती("ब्लॉग मौजूद नहीं है");
}
} पकड़ (गलती) {
res.writeHead(404, { "सामग्री प्रकार": "आवेदन/जेसन" });
रेस।समाप्त(JSON.stringify({ संदेश: गलती }));
}
}

यह कोड का उपयोग करता है मिलान विधि, जो एक तर्क के रूप में एक रेगेक्स अभिव्यक्ति में लेती है, यह जांचने के लिए कि यूआरएल प्रारूप से मेल खाता है या नहीं: /api/blogs/.

अगला, निकालें पहचान से संपत्ति यूआरएल इसे कॉल करके स्ट्रिंग विभाजित करना तरीका। यह विधि एक पैटर्न को एक तर्क के रूप में लेती है (/), पैटर्न के आधार पर स्ट्रिंग को विभाजित करता है, और एक सरणी देता है। उस सरणी का तीसरा तत्व है पहचान.

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

पोस्ट रूट

इसे लागू करने के लिए नीचे दिए गए कोड ब्लॉक को अपने राउटर फ़ंक्शन में जोड़ें पद रूट हैंडलर:

// पोस्ट: / एपीआई / ब्लॉग /
अगर (req.url "/api/blogs"&& अनुरोध विधि "पद") {
प्रयत्न {
चलो शरीर = "";

// डेटा घटना के लिए सुनो
अनुरोध पर ("जानकारी", (चंक) => {
शरीर + = खंड। टूस्ट्रिंग ();
});

// के लिए सुनो समाप्तप्रतिस्पर्धा
अनुरोध पर ("समाप्त", एसिंक () => {
// ब्लॉग बनाएं
होने देना ब्लॉग = नया ब्लॉग(JSON.parse (शरीर));

// डीबी में सहेजें
इंतजार ब्लॉग.सेव ();
res.writeHead (200, { "सामग्री प्रकार": "आवेदन/जेसन" });
रेस।समाप्त(JSON.stringify(ब्लॉग));
});
} पकड़ (गलती) {
सांत्वना देनालॉग (त्रुटि);
}
}

अनुरोध वस्तु को लागू करता है Node.js ReadableStream इंटरफेस। यह धारा उत्सर्जित करती है a जानकारी और एक समाप्त घटना जो आपको अनुरोध निकाय से डेटा तक पहुंच प्रदान करती है।

यह कोड डेटा ईवेंट के लिए सुनता है और इसे एक स्ट्रिंग में परिवर्तित करके और इसे से जोड़कर संभालता है तन चर। में समाप्त ईवेंट हैंडलर, यह बनाता है a ब्लॉग उदाहरण के लिए पार्स की गई बॉडी स्ट्रिंग के साथ। यह तब नया ब्लॉग सहेजता है, स्थिति कोड और सामग्री शीर्षलेख भेजता है, और अनुरोध बंद कर देता है।

पुट रूट

इसे लागू करने के लिए नीचे दिए गए कोड ब्लॉक को अपने राउटर फ़ंक्शन में जोड़ें रखना रूट हैंडलर:

// PUT: /api/ब्लॉग/:id
अगर (req.url.match(/\\/api\\/blogs\\/([0-9]+)/) && अनुरोध विधि "रखना") {
प्रयत्न {
// यूआरएल से आईडी निकालें
कास्ट आईडी = req.url.split("/")[3];
चलो शरीर = "";

अनुरोध पर ("जानकारी", (चंक) => {
शरीर + = खंड। टूस्ट्रिंग ();
});
अनुरोध पर ("समाप्त", एसिंक () => {
// लगता है और अपडेट करेंदस्तावेज़
होने देना अपडेटेडब्लॉग = इंतजार Blog.findByIdAndUpdate (आईडी, JSONपार्स (शरीर), {
नया: सच,
});

res.writeHead (200, { "सामग्री प्रकार": "आवेदन/जेसन" });
रेस।समाप्त(JSON.stringify(अपडेटेडब्लॉग));
});
} पकड़ (गलती) {
सांत्वना देनालॉग (त्रुटि);
}
}

PUT अनुरोध हैंडलर लगभग समान है पद अनुरोध हैंडलर, सिवाय इसके कि यह निकालता है पहचान से संपत्ति यूआरएल संबंधित ब्लॉग को अपडेट करने के लिए।

रूट हटाएं

अपने राउटर फ़ंक्शन को लागू करने के लिए नीचे दिए गए कोड ब्लॉक को जोड़ें मिटाना रूट हैंडलर:

// मिटाना: /एपीआई/ब्लॉग/:पहचान
अगर (req.url.match(/\\/api\\/blogs\\/([0-9]+)/) && अनुरोध विधि "मिटाना") {
प्रयत्न {
कास्ट आईडी = req.url.split("/")[3];

// मिटाना ब्लॉग से डाटाबेस
इंतजार Blog.findByIdAndDelete (आईडी);
res.writeHead (200, { "सामग्री प्रकार": "आवेदन/जेसन" });
res.end (JSON.stringify({ संदेश: "ब्लॉग सफलतापूर्वक हटाया गया" }));
} पकड़ (गलती) {
res.writeHead(404, { "सामग्री प्रकार": "आवेदन/जेसन" });
रेस।समाप्त(JSON.stringify({ संदेश: गलती }));
}
}

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

अंत में, आयात रूटर अपने में सर्वर.जेएस फ़ाइल करें और अपना कॉल करें रूटर समारोह, गुजर अनुरोध तथा रेस तर्क के रूप में:

स्थिरांक राउटर = ज़रूरत होना("./मार्ग/ब्लॉगरूट्स");

स्थिरांक सर्वर = http.createServer((req, res) => {
राउटर (req, res);
});

यह आपके सर्वर को अनुरोधों को उचित रूप से इंटरसेप्ट और हैंडल करने की अनुमति देता है।

आप इसमें पूरा प्रोजेक्ट पा सकते हैं गिटहब भंडार.

Node.js फ्रेमवर्क का उपयोग करना

भले ही हाथ से वेब एपीआई बनाना संभव हो, लेकिन यह एक मुश्किल काम हो सकता है। आपको यह सुनिश्चित करने की आवश्यकता होगी कि आपने बहुत सारे किनारे के मामलों को कवर किया है और आपका कोड बग-मुक्त होना बेहतर है।

वर्षों से, डेवलपर्स ने इसे बहुत आसान बनाने के लिए ExpressJS, NestJS, Fastify, आदि जैसे ढांचे का निर्माण किया है।