स्प्रिंग बूट 2, जेपीए/हाइबरनेट और माईएसक्यूएल का उपयोग करके सीआरयूडी रेस्ट एपीआई कैसे बनाएं
इस लेख में हम सीखेंगे कि स्प्रिंग बूट 2 + जेपीए/हाइबरनेट और MySQL के साथ डेटाबेस के रूप में एक सीआरयूडी रीस्टफुल एपीआई कैसे विकसित किया जाए।
इन लेखों का अंतिम लक्ष्य इस एप्लिकेशन को Oracle क्लाउड पर परिनियोजित करना है। लेकिन पहले, हम स्थानीय डेटाबेस का उपयोग करके एप्लिकेशन को विकसित और परीक्षण करेंगे।
आरंभ करने से पहले, यहां एक सूची दी गई है कि हमें इस ट्यूटोरियल को पूरा करने के लिए क्या चाहिए:
एपीआई हम विकसित करेंगे
हम RESTFul URI और HTTP विधियों का उपयोग करके तीन सेवाओं को उजागर करने वाला एक संपर्क संसाधन बनाएंगे:
बनाम कोड लाइव सर्वर
- सभी संपर्कों को पुनः प्राप्त करें - |_+_|
- विशिष्ट संपर्क का विवरण प्राप्त करें - |_+_|
- एक संपर्क हटाएं - |_+_|
- एक नया संपर्क बनाएं - |_+_|
- मौजूदा संपर्क विवरण अपडेट करें - |_+_|
REST स्प्रिंग बूट एप्लिकेशन बनाना
स्प्रिंग बूट एप्लिकेशन बनाने के लिए, हम उपयोग करेंगे start.spring.io , जो हमें कुछ बूटस्ट्रैप कोड (मुख्य वर्ग और |_+_| फ़ाइलें) प्रदान करेगा। हमें चाहिए |_+_|, |_+_|, |_+_| और |_+_| इस उदाहरण के लिए संकुल:
उपरोक्त आरेख से देखें, हमने निम्नलिखित विवरण निर्दिष्ट किए हैं:
@GetMapping(/contacts)
सभी विवरण दर्ज करने के बाद |_+_| . पर क्लिक करें बटन, ज़िप फ़ाइल डाउनलोड करें, इसकी सामग्री को अपने कार्यक्षेत्र में निकालें और इसे अपने पसंदीदा आईडीई में खोलें।
परियोजना संरचना
निम्न स्क्रीनशॉट उस प्रोजेक्ट की संरचना दिखाता है जिसे हम बनाएंगे।
मॉडल बनाना (जेपीए इकाई)
पहला वर्ग जो हम बनाएंगे वह है JPA Entity। हम एक वर्ग बनाएंगे |_+_| प्राथमिक कुंजी के साथ |_+_|:
मॉडल इस आलेख श्रृंखला के भाग 1 के समान है, लेकिन हम निर्दिष्ट करेंगे कि कैसे आईडी स्वतः उत्पन्न होगी क्योंकि हम अब H2 डेटाबेस का उपयोग नहीं कर रहे हैं।
@GetMapping(/contacts/{id})
निम्नलिखित एनोटेशन प्रोजेक्ट लोम्बोक से हैं और गेटर्स और सेटर्स के बिना हमारी कक्षाओं (विशेष रूप से मॉडल/पीओजेओ) को क्लीनर रखने में हमारी सहायता करते हैं:
- |_+_|: स्वचालित रूप से सभी तर्कों (गुणों) के साथ एक क्लास कंस्ट्रक्टर बनाता है।
- |_+_|: स्वचालित रूप से सभी तर्कों (गुणों) के साथ एक खाली वर्ग कंस्ट्रक्टर बनाता है।
- |_+_|: बनाता है |_+_|, |_+_|, |_+_|, |_+_| और |_+_|.
जेपीए रिपोजिटरी बनाना
|_+_| . में हेरफेर करने के तरीकों को आसानी से एक्सेस करने के लिए तालिका, हमें केवल एक इंटरफ़ेस बनाने की आवश्यकता है जो |_+_| . का विस्तार करता है उस वर्ग को पास करना जो हमारे मॉडल और प्राथमिक कुंजी के प्रकार को सामान्य तर्कों के रूप में दर्शाता है:
@DeleteMapping(/contacts/{id})
|_+_| इंटरफ़ेस सभी CRUD संचालनों तक पहुँचने का एक सरल और आसान तरीका प्रदान करता है।
नियंत्रक बनाना
हमारे डेटा तक पहुंचने के लिए, हमें एक नियंत्रक की भी आवश्यकता होगी।
@PostMapping(/contacts)
|_+_| एनोटेशन में शामिल है |_+_| और |_+_| एनोटेशन। |_+_| एनोटेशन एंडपॉइंट वाले वर्ग का प्रतिनिधित्व करता है और |_+_| इंगित करता है कि एक विधि वापसी मूल्य वेब प्रतिक्रिया निकाय के लिए बाध्य होना चाहिए (के अनुसार) प्रलेखन )
|_+_| इंगित करता है कि इस नियंत्रक में एपीआई का यूआरएल |_+_| से शुरू होगा, इसलिए हम |_+_| तक पहुंच पाएंगे। हमारे समापन बिंदु के रूप में।
कृपया ध्यान दें कि हम |_+_| . का उपयोग नहीं कर रहे हैं स्वचालित रूप से भंडार को इंजेक्ट करने के लिए एनोटेशन। हम कंस्ट्रक्टर के माध्यम से निर्भरता इंजेक्शन का उपयोग कर रहे हैं क्योंकि यह एक अनुशंसित सर्वोत्तम अभ्यास है।
जैसा कि यह एक सरल उदाहरण है, हम रिपॉजिटरी के साथ पुनरावृति करने के लिए सर्विस क्लास नहीं बना रहे हैं। सेवा परत बनाना एक अच्छा अभ्यास है क्योंकि हम अपने नियंत्रक वर्ग को साफ रख सकते हैं और इसके बजाय सेवा में कोई भी आवश्यक व्यावसायिक तर्क जोड़ सकते हैं।
आइए आगे प्रत्येक विधि पर एक नज़र डालें।
सभी संपर्कों को पुनः प्राप्त करें (प्राप्त करें / संपर्क)
@PutMapping(/contacts/{id})
|_+_| विधि डेटाबेस से सभी रिकॉर्ड पुनर्प्राप्त करने जा रही है (|_+_|)।
इकोमी ओमी कैसे खरीदें
चूंकि यह एक विश्वसनीय एपीआई है, हम |_+_| . को छोड़ सकते हैं और बस |_+_| का उपयोग करें।
आईडी द्वारा संपर्क प्राप्त करें (GET /contacts/{id})
pom.xml
|_+_| एनोटेशन विधि पैरामीटर को बांधता है |_+_| पथ चर के साथ |_+_|।
हम डेटाबेस में जाएंगे और संपर्क (|_+_|) को पुनः प्राप्त करने का प्रयास करेंगे। यदि कोई संपर्क मिलता है, तो हम उसे वापस कर देते हैं (HTTP 200 - OK), अन्यथा, हम HTTP 404 -Not Found लौटाते हैं।
एक नया संपर्क बनाएं (पोस्ट / संपर्क)
Web
|_+_| एनोटेशन इंगित करता है कि एक विधि पैरामीटर वेब अनुरोध के मुख्य भाग के लिए बाध्य होना चाहिए। इसका मतलब यह है कि विधि निम्नलिखित सामग्री को क्यू अनुरोध (JSON प्रारूप में) से अपेक्षा करती है:
JPA
स्प्रिंग स्वचालित रूप से अनुरोध को पार्स करेगा और इसकी सामग्री के साथ संपर्क प्रकार का एक चर बनाएगा। फिर, यह इसे बचाएगा। |_+_| संपर्क का होगा |_+_|, इसलिए |_+_| विधि संपर्क तालिका में सम्मिलित करेगी।
संपर्क अपडेट करें (पुट / संपर्क)
Lombok
किसी संपर्क को अद्यतन करने के लिए, हमें पथ चर में उसकी आईडी को सूचित करना होगा। हमें अद्यतन संपर्क को भी पास करना होगा।
इसके बाद, हम अद्यतन किए जाने वाले संपर्क को खोजने का प्रयास करेंगे। यदि संपर्क पाया जाता है, तो हम डेटाबेस से रिकॉर्ड से मानों को विधि के पैरामीटर के रूप में पारित मानों के साथ अपडेट करते हैं और इसे सहेजते हैं। इस मामले में, जैसा कि रिकॉर्ड मौजूद है, संपर्क तालिका में एक अद्यतन विवरण निष्पादित किया जाएगा। हम अद्यतन संपर्क भी लौटाते हैं। यदि संपर्क नहीं मिलता है, तो यह HTTP 404 लौटाता है।
एक संपर्क निकालें (हटाएं /संपर्क/{id})
MySQL
किसी संपर्क को हटाने के लिए, हमें पहले उसे डेटाबेस से पुनर्प्राप्त करना होगा। यदि यह पाया जाता है, तो हम इसकी आईडी पास करते हुए इसे हटा देते हैं और यह इंगित करने के लिए HTTP 200 लौटाते हैं कि विलोपन सफलतापूर्वक किया गया था। यदि संपर्क नहीं मिलता है, तो हम HTTP 404 लौटाते हैं।
दुबई का सिक्का कहां से खरीदें
MySQL डेटाबेस को इनिशियलाइज़ करना
अंतिम चरण के रूप में, हम MySQL में कुछ रिकॉर्ड डालने जा रहे हैं |_+_| एक |_+_| . घोषित करके तालिका जो एक |_+_| . लौटाता है - यदि आप पहले से किसी मौजूदा डेटाबेस/टेबल का उपयोग कर रहे हैं तो यह चरण वैकल्पिक है।
Generate Project
}
MySQL डेटाबेस को कॉन्फ़िगर करना
हमारे कोड को एक MySQL डेटाबेस से कनेक्ट करने में सक्षम होने के लिए, हमें कनेक्शन विवरण को सूचित करने की भी आवश्यकता है। हम इन विवरणों को |_+_| के अंदर जोड़ने जा रहे हैं:
Contact
यदि आप चाहते हैं कि हाइबरनेट डेटाबेस में स्वचालित रूप से तालिका उत्पन्न करे, तो हम निम्न कॉन्फ़िगरेशन का भी उपयोग कर सकते हैं:
id
हालांकि यह विकास के दौरान आसान बनाता है, लेकिन उत्पादन में इसकी अनुशंसा नहीं की जाती है। उत्पादन के लिए, आप एक कार्यात्मक आईडी (उपयोगकर्ता/पासवर्ड) बनाना चाह सकते हैं जो तालिकाओं में सभी सीआरयूडी संचालन कर सके ( डीएमएल (डेटा हेरफेर भाषा) आदेश), लेकिन कोई भी प्रदर्शन नहीं कर सकता डीडीएल (डेटा परिभाषा भाषा) कमांड (बनाएं, छोड़ें, टेबल बदलें, और इसी तरह)।
|_+_| . बनाने के लिए तालिका में, हम निम्नलिखित SQL स्क्रिप्ट का उपयोग कर सकते हैं:
कमियां कहां से खरीदें
AllArgsConstructor
एपीआई का परीक्षण
हम एपीआई का उपयोग कर परीक्षण कर सकते हैं डाकिया . यदि आप विजुअल स्टूडियो कोड का उपयोग करते हैं, तो आप आरईएसटी क्लाइंट एक्सटेंशन का भी उपयोग कर सकते हैं।
REST क्लाइंट एक्सटेंशन का उपयोग करके परीक्षण के लिए फ़ाइल भी स्रोत कोड में शामिल है
निष्कर्ष
इस लेख में, हमने स्थानीय रूप से वास्तविक डेटाबेस से कनेक्ट होने वाले CRUD API का विकास और परीक्षण किया है।
मुझे उम्मीद है कि यह ट्यूटोरियल निश्चित रूप से मदद करेगा और अगर आपको यह ट्यूटोरियल पसंद आया है, तो कृपया इसे दूसरों के साथ साझा करने पर विचार करें
#स्प्रिंग-बूट #जावा #हाइबरनेट #mysql #वेब-डेवलपमेंट
यह सभी देखें:
- कस्टम हुक का उपयोग करके रिएक्ट में किसी भी टेबल के लिए सर्च इंजन कैसे बनाएं।
- वेबपैक के लिए विस्मयकारी टाइपस्क्रिप्ट लोडर
- JSON वेब टोकन का उपयोग करके GraphQL प्रमाणीकरण
- ग्राफ़क्यूएल क्वेरी क्या है? अपोलो एक्सप्लोरर का उपयोग करते हुए ग्राफक्यूएल क्वेरी उदाहरण
- सेकंडों में अभिव्यंजक वेब प्रस्तुतियाँ बनाने के लिए एक जावास्क्रिप्ट लाइब्रेरी