Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. Node.js
Code

अपने पहले API को Node.js के साथ कोड करें: एक डेटाबेस से कनेक्ट करें

by
Difficulty:BeginnerLength:LongLanguages:
This post is part of a series called Code Your First API With Node.js and Express.
Code Your First API With Node.js and Express: Set Up the Server

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

Node.js और Express के साथ एक REST API बनाएं: एक डेटाबेस कनेक्ट करें

पहले ट्यूटोरियल में, Restful API को समझना, हमने सीखा कि REST आर्किटेक्चर क्या है, HTTP रिक्वेस्ट मेथड और रिस्पांस क्या है, और RESTful API एंड प्वाइंट को कैसे समझा जाए। दूसरे ट्यूटोरियल में, Express API सरवर को कैसे सेट अप करें, हमने सीखा कि कैसे Node के built-in http मॉड्यूल और Express फ्रेमवर्क दोनों के साथ सरवर का निर्माण किया जाए, और हमने जिस ऐप को अलग-अलग URL एंड प्वाइंट के लिए बनाया उसे कैसे रूट किया जाए।

इस बार, हम एक JSON फीड के रूप में यूजर इनफॉरमेशन को प्रदर्शित करने के लिए स्टैटिक डाटा का उपयोग कर रहे हैं जब API एंड प्वाइंट को GET के साथ हिट किया जाता है। इस ट्यूटोरियल में, हम सभी डाटा स्टोर करने के लिए, हमारे Node.js ऐप से डेटाबेस से कनेक्ट करने के लिए MySQL डेटाबेस सेटअप करने जा रहे हैं, और API को GET, POST, PUT, और DELETE मेथड्स का उपयोग करने की अनुमति देते हैं ताकि यह पूरी API को बना सके।

इंस्टॉलेशन

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

यदि आपके पास MySQL इंस्टॉल नहीं है, तो आप macOS और Windows के लिए MAMP डाउनलोड कर सकते हैं, जो एक निशुल्क लोकल सर्वर एनवायरमेंट और डेटाबेस प्रदान करता है। यह डाउनलोड करने के बाद, प्रोग्राम खोलें और MySQL शुरू करने के लिए Start Servers पर क्लिक करें।

MySQL को स्वयं सेट अप करने के अलावा, हम GUI सॉफ्टवेयर से चाहेंगे कि वह डेटाबेस और टेबल को देखें। Mac के लिए, SequelPro डाउनलोड करें, और Windows के लिए SQLyog डाउनलोड करें। एक बार जब आप MySQL डाउनलोड और रन कर लेते हैं, तो आप localhost से यूजरनाम root और पासवर्ड root को पोर्ट 3306 के साथ कनेक्ट करने के लिए SequelPro या SQLyog का उपयोग कर सकते हैं।

एक बार जब सब कुछ यहां सेटअप हो जाता है, तो हम अपने API के लिए डेटाबेस सेट अप करने के लिए आगे बढ़ सकते हैं।

डेटाबेस को सेट अप करना

हमारे डेटाबेस दिखाने वाले सॉफ्टवेयर में, एक नया डेटाबेस जोड़ें और इसे api कहें। सुनिश्चित करें कि MySQL चल रहा है, नहीं तो आप localhost से कनेक्ट नहीं कर पाएंगे।

जब आपके पास api डेटाबेस बनकर तैयार है, तो उसमें चले जाएं और एक नया टेबल बनाने के लिए निम्नलिखित क्वेरी को चलाएं।

यह SQL क्वेरी हम users टेबल का स्ट्रक्चर बनाएगी। प्रत्येक यूजर के पास एक ऑटो-इन्क्रीमेंट होने वाली id, एक name, और एक email ऐड्रेस होगा।

हम डेटाबेस को उसी डाटा से भी भर सकते हैं जिसे हम इस समय INSERT क्वेरी चला कर JSON ऐरे के माध्यम से प्रदर्शित कर रहे हैं।

id फील्ड को इनपुट करने की कोई आवश्यकता नहीं है, क्योंकि यह ऑटो-इंक्रीमेंटिंग है। इस पॉइंट पर, हमारे पास अपनी टेबल का स्ट्रक्चर और साथ ही साथ काम करने के लिए कुछ सैंपल डाटा है।

MySQL से कनेक्ट करना

अपने ऐप में वापस आते हैं, हमें डाटा के साथ काम शुरू करने के लिए Node.js से MySQL से कनेक्ट करना होगा। पहले, हमने mysql npm मॉड्यूल इंस्टॉल किया था, और अब हम इसका उपयोग करने जा रहे हैं।

data नामक एक नई डायरेक्टरी बनाएं और एक config.js फाइल बनाएं।

हम data/config.js में mysql मॉड्यूल की आवश्यकता से शुरू करेंगे।

आइए एक config ऑब्जेक्ट बनाए जिसमें होस्ट, यूजर, पासवर्ड, और डेटाबेस शामिल है। यह हमारे द्वारा बनाए गए api डेटाबेस को रेफर करना चाहिए और इसे डिफॉल्ट localhost सेटिंग्स का उपयोग करना चाहिए।

दक्षता प्राप्त करने के लिए, हम एक MySQL pool बनाने जा रहे हैं, जो हमें कई कनेक्शनों को मैनुअल रूप से खोलने और बंद करने के बदले कहीं कनेक्शनों का उपयोग करने की अनुमति देता है।

अंत में, हम MySQL pool को एक्सपोर्ट करेंगे ताकि ऐप इसका उपयोग कर सकें।

आप हमारे GitHub रेपो में पूरी डाटाबेस कंफीग्रेशन फाइल देख सकते हैं।

अब जब हम MySQL से जुड़ रहे हैं और हमारी सेटिंग्स पूरी हो गई है, हम API से डेटाबेस के साथ इंटरेक्ट कर सकते हैं।

MySQL से API डाटा प्राप्त करना

इस समय, हमारे routes.js फाइल मैन्युअल रूप से यूजर्स के JSON array का निर्माण कर रही है, जो इस तरह दिखता है।

क्योंकि अब हम स्टैटिक डाटा का उपयोग नहीं करने जा रहे हैं, हम उस संपूर्ण ऐरे को हटा सकते हैं और इसे हमारे MySQL pool के लिंक से बदल सकते हैं।

इससे पहले, GET ./users path के लिए स्टैटिक users डाटा भेज रहा था। हमारा अपडेट किया हुआ कोड इसके बजाय उस डाटा के लिए डेटाबेस को क्वेरी करने जा रहा है। हम users टेबल से सभी को SELECT करने के लिए SQL क्वेरी का उपयोग करने जा रहे हैं, जो इस तरह दिखता है।

जहां pool.query() मेथड का उपयोग करके हमारे नए /users को जो रूट मिलेगा, वह ऐसा दिखेगा।

यहां, हम SELECT क्वेरी चला रहे हैं और फिर JSON के रूप में क्लाइंट को /users के एंड प्वाइंट के माध्यम से रिजल्ट भेज रहे हैं। यदि आप सब को फिर से शुरू करते हैं और /users पेज पर जाते हैं तो आपको पहले जैसा ही डाटा दिखाई देगा, लेकिन अब यह डायनेमिक है।

URL पैरामीटर का उपयोग करना

अब तक, हमारे एंड प्वाइंट्स स्टेटिक पाथ है- या तो / रूट या /users- लेकिन क्या होगा जब हम केवल एक स्पेसिफिक यूजर के बारे में डाटा देखना चाहते हैं? हमें एक वेरिएबल एंड पॉइंट का उपयोग करने की आवश्यकता होगी।

हमारे यूजर्स के लिए, हम उनकी यूनिक id के आधार पर प्रत्येक व्यक्ति के बारे में जानकारी प्राप्त करना चाहते हैं। ऐसा करने के लिए हम एक colon (:) का उपयोग करेंगे यह दर्शाने के लिए कि यह रूट पैरामीटर है।

हम इस पाथ के लिए पैरामीटर को request.params प्रॉपर्टी के साथ रिट्रीव कर सकते हैं। क्योंकि हमारे वाले का नाम id है, इसलिए हम इसको रेफर करेंगे।

अब हम WHERE क्लोज को हमारी SELECT स्टेटमेंट में जोड़ेंगे ताकि हमें वही रिजल्ट प्राप्त हो जिनके पास बताई गई id हो।

हम ? का उपयोग एक प्लेसहोल्डर की तरह करेंगे ताकि हम SQL इंजेक्शन से बच सकें और id को पैरामीटर के जरिए पास कर सकें, बजाय इसके कि हम एक concatenate की हुई string बनाएं, जोकि कम सुरक्षित होगी।

हमारे इंडिविजुअल यूजर रिसोर्स का पूरा कोड अब इस तरह दिखता है:

अब आप सर्वर को फिर से शुरू कर सकते हैं और Gilfoyle के लिए केवल जानकारी देखने के लिए https://localhost/users/2 पर नेविगेट कर सकते हैं। यदि आपको कोई और नहीं मिलता जैसे कि Cannot GET /users/2, इसका मतलब है कि आपको सर्वर को रीस्टार्ट करने की आवश्यकता है।

इस URL पर जाकर एक सिंगल रिजल्ट रिटर्न होना चाहिए।

अगर ऐसा ही आपको नजर आ रहा है, तो मुबारक हो: आप ने सफलतापूर्वक डायनेमिक रूट पैरामीटर सेट कर लिया है!

POST रिक्वेस्ट को भेजना

अब तक, हम जो कुछ भी कर रहे हैं वह GET रिक्वेस्ट्स का उपयोग करता है। यह रिक्वेस्ट सुरक्षित हैं, इसका अर्थ है कि वे सर्वर के स्टेट में परिवर्तन नहीं करते हैं। हम केवल JSON डाटा देख रहे हैं।

अब हम नए डाटा को जोड़ने के लिए POST रिक्वेस्ट का उपयोग करके API को वास्तविक में डायनेमिक बनाने के काम को शुरू करने जा रहे हैं।

मैंने पहले REST को समझने वाले आर्टिकल में उल्लेख किया था कि हम एक्शंस को करने के लिए URL में add या delete जैसे एक्शंस का उपयोग नहीं करते हैं। डेटाबेस में एक नया यूज़र जोड़ने के लिए, हम उसी URL पर POST करेंगे जिससे हम उन्हें देखते हैं, लेकिन इसके लिए एक अलग रूट सेट करते हैं।

ध्यान दें कि अब हम app.get() की बजाय app.post() का उपयोग कर रहे हैं।

क्योंकि पढ़ने के बजाय इसे बना रहे हैं, हम यहां एक INSERT क्वेरी का उपयोग करेंगे, बहुत कुछ जैसे हमने डेटाबेस के इनीशिएलाइजेशन पर किया था। हम SQL क्वेरी के माध्यम से पूरे request.body को भेजेंगे।

हम 201 के रूप में रिस्पांस का स्टेटस भी बताने जा रहे हैं, जोकि Created के लिए स्टैंड होता है। अंतिम इंसर्ट किए गए आइटम की id प्राप्त करने के लिए, हम insertId प्रॉपर्टी का उपयोग करेंगे।

हमारा संपूर्ण POST कोड इस तरह दिखाई देगा।

अब हम एक POST रिक्वेस्ट भेज सकते हैं। जब आप POST रिक्वेस्ट भेजते हैं, तो अधिकतर समय आप इसे वेब फॉर्म के माध्यम से करते हैं। इस आर्टिकल के अंत तक हम सीखेंगे कि इसे कैसे सेट किया जाए, लेकिन टेस्ट POST भेजने का सबसे तेज और आसान तरीका cdL के साथ -d (--data) फ्लैग का उपयोग करना है।

हम curl -d को रन करेंगे, उसके बाद एक क्वेरी स्ट्रिंग होगी जिसमें सभी key/value जोड़ें और रिक्वेस्ट एंड प्वाइंट होगा।

एक बार जब आप इस रिक्वेस्ट को भेज देते हैं, तो आपको सर्वर से रिस्पांस मिलना चाहिए।

यदि आप http://localhost/users पर नेविगेट करते हैं, तो आपको लिस्ट में लेटेस्ट एंट्री दिखाई देती है।

PUT रिक्वेस्ट को भेजना

नया यूजर जोड़ने के लिए POST उपयोगी है लेकिन हम मौजूदा यूजर को मॉडिफाई करने के लिए PUT का उपयोग करना चाहते हैं। PUT एक प्रकार का शब्द है, जिसका अर्थ है कि आप एक रिक्वेस्ट कई बार भेज सकते हैं और केवल एक एक्शन किया जाएगा। यह POST से अलग है, क्योंकि यदि हमने अपनी नई यूजर की रिक्वेस्ट एक से अधिक बार भेजी है, तो यह POST रिक्वेस्ट नए यूजर का निर्माण करती रहेगी।

हमारे API के लिए, हम PUT को सेट अप करने जा रहे हैं ताकि किसी एक यूजर की एडिटिंग हैंडल करने में सक्षम हो, इसलिए हम इस बार :id रूट पैरामीटर का उपयोग करने जा रहे हैं।

चलिए एक UPDATE क्वेरी बनाते हैं और यह सुनिश्चित करते हैं कि यह केवल रिक्वेस्ट की गई id पर WHERE क्लोज के साथ लागू होता है। हम दो ? प्लेसहोल्डर्स का उपयोग कर रहे हैं, और हमारे द्वारा पास की गई वैल्यू सीक्वेंशियल (sequential) ऑर्डर में जाएगी।

हमारे टेस्ट के लिए, हम यूजर 2 को एडिट करेंगे और ईमेल ऐड्रेस को gilfoyle@piedpiper.com से bertram@piedpiper.com पर अपडेट करेंगे। हम cURL का प्रयोग फिर से कर सकते हैं, [-X (--request)] फ्लैग के साथ, यह बताने के लिए कि हम एक PUT रिक्वेस्ट भेज रहे हैं।

रिक्वेस्ट भेजने से पहले सरवर को रीस्टार्ट करना सुनिश्चित करें, नहीं तो आपको Cannot PUT /users/2 एरर मिलेगा।

आपको यह दिखना चाहिए:

id 2 के साथ यूजर डाटा को आप अपडेट किया जाना चाहिए।

एक DELETE रिक्वेस्ट को भेजना

API के CRUD फंक्शनैलिटी को पूरा करने के लिए हमारा अंतिम कार्य डेटाबेस से एक यूजर को डिलीट करने के लिए एक ऑप्शन बनाना है। यह रिक्वेस्ट WHERE के साथ एक DELETE SQL क्वेरी का उपयोग करेगी, और यह एक रूट पैरामीटर द्वारा स्पेसिफाई एक इंडिविजुअल यूजर को डिलीट कर देगी।

एक डिलीट को भेजने के लिए cURL के साथ -X को फिर से उपयोग कर सकते हैं। आइए हमारे द्वारा बनाए गए नए यूजर को डिलीट कर दें।

आपको एक सक्सेस मैसेज दिखाई देगा।

http://localhost:3002 पर नेविगेट करें, और आप देखेंगे कि आप केवल दो यूजर हैं।

मुबारक हो! इस पॉइंट पर, API पूरा हो गया है। routes.js के पूरे कोड को देखने के लिए GitHub repo पर जाएं।

request मॉड्यूल के माध्यम से रिक्वेस्ट को भेजना

इस आर्टिकल की शुरुआत में, हमने चार डिपेंडेंसीज इंस्टॉल की, और उनमें से एक request मॉड्यूल था। cURL रिक्वेस्ट्स का उपयोग करने के बजाय, आप सभी डेटा के साथ एक नई फाइल बना सकते हैं और उसके माध्यम से भेज सकते हैं। मैं post.js नामक एक फाइल बना लूंगा जो POST के माध्यम से एक नया यूजर बनाएगी।

जब सर्वर चल रहा हो उस दौरान हम एक नई टर्मिनल विंडो में node post.js का उपयोग करके इसे कॉल कर सकते हैं, और इसका उतना ही प्रभाव होगा जितना cURL का उपयोग करने का होता है। अगर कुछ cURL के साथ काम नहीं कर रहा है, तो request मॉड्यूल उपयोगी है क्योंकि हम एरर, रिस्पांस, और बॉडी को देख सकते हैं।

वेब फॉर्म के माध्यम से रिक्वेस्ट भेजना

आमतौर पर, POST और अन्य HTTP मेथड्स जो सर्वर के स्टेट को बदलते हैं, HTML फॉर्म का उपयोग करके भेजे जाते हैं। इस बेहद सरल उदाहरण में, हम कहीं भी एक index.html फाइव बना सकते हैं, और एक नाम और ईमेल एड्रेस के लिए फील्ड बना सकते हैं। फॉर्म के एक्शन रिसोर्ट स्कोर प्वाइंट करेगा, इस मामले में http://localhost:3002/users, और हम post के रूप में मेथड स्पेसिफाई करेंगे।

index.html बनाएं और उसमें निम्न कोड जोड़ें:

अपने ब्राउज़र में इस स्टेटिक HTML फाइल को खोलें, इसे भरे, और टर्मिनल में सरवर के चलने के दौरान इसे भेजें। आपको User added with ID: 4 का रिस्पांस दिखना चाहिए, और आपको users की नई लिस्ट देखने में सक्षम होना चाहिए।

निष्कर्ष

इस ट्यूटोरियल में हमने सीखा कि कैसे एक MySQL डेटाबेस के साथ Express सर्वर को हुक किया जाए और paths और डायनेमिक रूट पैरामीटर के लिए GET, POST, PUT, और DELETE मेथड्स के अनुरूप रूट्स सेट किए जाएं। हमने यह भी सीखा कि cURL, Node.js request मॉड्यूल और HTML फॉर्म्स का उपयोग करके एक API सर्वर से HTTP रिक्वेस्ट कैसे भेजे।

इस पॉइंट पर, आपको इस बारे में बहुत अच्छी समझ होनी चाहिए कि Restful API कैसे काम करता है, वह आप Express और MySQL के साथ Node.js मैं अपना स्वयं का पूर्ण API बना सकते हैं।

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.