आप जैसे पाठक MUO का समर्थन करने में मदद करते हैं। जब आप हमारी साइट पर लिंक का उपयोग करके खरीदारी करते हैं, तो हम संबद्ध कमीशन अर्जित कर सकते हैं। और पढ़ें।

परिवर्णी शब्द REST का अर्थ प्रतिनिधि राज्य स्थानांतरण है, जबकि API का अर्थ एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस है। साथ में, वे REST API को संदर्भित करते हैं। REST API एक ऐसी सेवा है जो REST आर्किटेक्चर पर दो सॉफ्टवेयर सिस्टम के बीच अनुरोधों और प्रतिक्रियाओं को स्थानांतरित करती है।

REST आर्किटेक्चर वेब सेवाओं का निर्माण करता है जो चार अनुरोध क्रियाओं में से एक का उपयोग करके URL के माध्यम से सुलभ हैं: POST, GET, PUT, और DELETE। तो, आप कह सकते हैं कि REST API एक ऐसा सॉफ़्टवेयर है जो आपको URL के माध्यम से संसाधनों को बनाने, पढ़ने, अपडेट करने और हटाने की अनुमति देता है।

आप स्प्रिंग बूट का उपयोग करके REST API बनाना सीख सकते हैं।

स्प्रिंग बूट एप्लिकेशन को प्रारंभ करना

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

instagram viewer

इस REST API के लिए, आपको एक नियंत्रक, एक मॉडल और एक रिपॉजिटरी की आवश्यकता होगी। तो, REST API में निम्न फ़ाइल संरचना होगी:

मॉडल बनाना

पहली श्रेणी जिसे आपको बनाने की आवश्यकता होगी वह ग्राहक मॉडल है, जो डेटा लॉजिक को संग्रहीत करता है।

पैकेट com.onlineshopaholics.api.model;

आयात जकार्ता.दृढ़ता। कॉलम;
आयात जकार्ता.दृढ़ता। इकाई;
आयात जकार्ता.दृढ़ता। उत्पन्न मूल्य;
आयात जकार्ता.दृढ़ता। जनरेशन टाइप;
आयात जकार्ता.दृढ़ता। पहचान;
आयात जकार्ता.दृढ़ता। मेज;

@मेज(नाम ="ग्राहक")
@इकाई
जनताकक्षाग्राहक{
@पहचान
@GeneratedValue(रणनीति = जेनरेशन टाइप। ऑटो)
निजी पूर्णांक आईडी;

@कॉलम(नाम ="ग्राहक का नाम")
निजी स्ट्रिंग नाम;

निजी स्ट्रिंग ईमेल;

जनता पूर्णांक getId(){
वापस करना पहचान;
}

जनताखालीपनसेट आईडी(पूर्णांक आईडी){
यहआईडी = आईडी;
}

जनता डोरी getName(){
वापस करना नाम;
}

जनताखालीपननाम भरें(स्ट्रिंग नाम){
यहनाम = नाम;
}

जनता डोरी getEmail(){
वापस करना ईमेल;
}

जनताखालीपनईमेल सेट करें(स्ट्रिंग ईमेल){
यहईमेल = ईमेल;
}
}

उपरोक्त ग्राहक वर्ग से, आप देखेंगे कि प्रत्येक ग्राहक के पास एक आईडी, नाम और ईमेल होगा। आप विभिन्न उद्देश्यों को पूरा करने वाले कई एनोटेशन भी देखेंगे।

  • @ एंटीटी: ग्राहक वर्ग को जेपीए इकाई के रूप में घोषित करता है। इसका मतलब है कि जेपीए संबंधपरक डेटाबेस में कॉलम बनाने के लिए कक्षा में फ़ील्ड्स का उपयोग करेगा।
  • @Table: तालिका का नाम निर्दिष्ट करता है जो ग्राहक मॉडल वर्ग को मैप करेगा।
  • @Id: एक संपत्ति निर्दिष्ट करता है जो विशिष्ट रूप से डेटाबेस में इकाई की पहचान करेगा।
  • @GeneratedValue और @GenerationType: ये उस क्षेत्र के लिए एक ऑटो-जनरेट रणनीति निर्दिष्ट करने के लिए एक साथ काम करते हैं जिसके साथ यह संबद्ध है। इसलिए, हर बार जब आप एक नया ग्राहक बनाते हैं तो आईडी फ़ील्ड स्वचालित रूप से एक अद्वितीय मान उत्पन्न करेगा।
  • @ कॉलम: डेटाबेस में कॉलम पर मैप करने वाली संपत्ति को निर्दिष्ट करता है। तो, नाम संपत्ति डेटाबेस में ग्राहक नाम कॉलम पर मैप की जाएगी।

रिपॉजिटरी बनाना

यह रिपॉजिटरी आपको डेटाबेस में ग्राहक डेटा के साथ इंटरैक्ट करने की अनुमति देगा।

पैकेट com.onlineshopaholics.api.repository;

आयात org.springframework.data.repository। क्रूड रिपोजिटरी;
आयात com.onlineshopaholics.api.model। ग्राहक;

जनताइंटरफेसCustomerRepositoryका विस्तारक्रूड रिपोजिटरी<ग्राहक, पूर्णांक>{}

ग्राहक भंडार का विस्तार होता है स्प्रिंग क्रूड रिपोजिटॉय इंटरफ़ेस, इसे इकाई के लिए अद्वितीय पहचानकर्ता के प्रकार के साथ ग्राहक मॉडल वर्ग पास करना, Integer.

CrudRepository इंटरफ़ेस 10 से अधिक संचालन तक पहुँच प्रदान करता है, जिसमें सामान्य CRUD विधियाँ शामिल हैं जिनकी आपको REST API के लिए आवश्यकता होगी। इसलिए, क्योंकि CrudRepository पहले से ही उन विधियों को परिभाषित करता है जिनकी आपको आवश्यकता होगी, CustomerRepository इंटरफ़ेस में उन्हें स्पष्ट रूप से घोषित करने की कोई आवश्यकता नहीं है।

नियंत्रक बनाना

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

पैकेट com.onlineshopaholics.api.controller;

आयात java.util. वैकल्पिक;

आयात org.springframework.beans.factory.annotation। स्वचालित;
आयात org.springframework.web.bind.annotation। मैपिंग हटाएं;
आयात org.springframework.web.bind.annotation। मैपिंग प्राप्त करें;
आयात org.springframework.web.bind.annotation। पाथ वेरिएबल;
आयात org.springframework.web.bind.annotation। पोस्ट मैपिंग;
आयात org.springframework.web.bind.annotation। पुट मैपिंग;
आयात org.springframework.web.bind.annotation। अनुरोध शरीर;
आयात org.springframework.web.bind.annotation। अनुरोध मैपिंग;
आयात org.springframework.web.bind.annotation। अनुरोधपरम;
आयात org.springframework.web.bind.annotation। प्रतिक्रिया शरीर;
आयात org.springframework.web.bind.annotation। रेस्टकंट्रोलर;

आयात com.onlineshopaholics.api.model। ग्राहक;
आयात com.onlineshopaholics.api.repository। ग्राहक रिपॉजिटरी;

@RestController
@Request मैपिंग("/ग्राहक")
जनताकक्षाग्राहक नियंत्रक{
@Autowired
निजी ग्राहक रिपॉजिटरी ग्राहक रिपोजिटरी;

// नया ग्राहक बनाएं
@पोस्ट मैपिंग("/जोड़ना")
जनता ग्राहक addNewCustomer(@RequestBody Customer newCustomer){
ग्राहक उपयोगकर्ता = नया ग्राहक();
user.setName (newCustomer.getName ());
user.setEmail (newCustomer.getEmail ());
CustomerRepository.save (उपयोगकर्ता);
वापस करना उपयोगकर्ता;
}

// सभी ग्राहकों को देखें
@GetMapping("सभी को देखें")
जनता@ResponsBodyपुनरावर्तनीयgetAllCustomers(){
वापस करना CustomerRepository.findAll ();
}

// विशिष्ट ग्राहक देखें
@GetMapping("देखें/{आईडी}")
जनता वैकल्पिकgetCustomer(@PathVariable पूर्णांक आईडी){
वापस करना CustomerRepository.findById (आईडी);
}

// मौजूदा ग्राहक को अपडेट करें
@PutMapping("/ संपादित करें/{आईडी}")
जनता डोरी अद्यतन(@RequestBody ग्राहक अद्यतन ग्राहक, @PathVariable पूर्णांक आईडी){
वापस करना CustomerRepository.findById (आईडी)
.नक्शा (ग्राहक -> {
Customer.setName (updateCustomer.getName ());
Customer.setEmail (updateCustomer.getEmail ());
CustomerRepository.save (ग्राहक);
वापस करना"ग्राहक विवरण सफलतापूर्वक अपडेट कर दिया गया है!";
}).orElseGet(() -> {
वापस करना"यह ग्राहक मौजूद नहीं है";
});
}

// ग्राहक हटाएं
@डिलीट मैपिंग("हटाएं/{आईडी}")
जनता डोरी मिटाना(@PathVariable("पहचान")पूर्णांक आईडी) {
CustomerRepository.deleteById (आईडी);
वापस करना"ग्राहक सफलतापूर्वक हटा दिया गया है!";
}
}

ऊपर दिया गया कंट्रोलर पांच CrudRepository का उपयोग करके REST API को CRUD ऑपरेशंस से लैस करता है इंटरफ़ेस विधियाँ (प्रत्येक एक विशिष्ट विधि को निर्दिष्ट)। नियंत्रक कई महत्वपूर्ण स्प्रिंग एनोटेशन का भी उपयोग करता है जो इसे अपने कार्य करने की अनुमति देता है।

  • @RestController: यह एनोटेशन दो उद्देश्यों को पूरा करता है। यह घटक स्कैनिंग द्वारा खोज के लिए एक वर्ग को चिह्नित करता है। यह स्प्रिंग को प्रतिक्रिया निकाय में इस वर्ग में सभी विधियों के लिए वापसी मान लिखने के लिए भी कहता है।
  • @RequestMapping: बेसलाइन अनुरोध पैटर्न को परिभाषित करता है जिसे नियंत्रक संभालेगा। तो, यह नियंत्रक "/ ग्राहकों" के सभी अनुरोधों को संभालेगा।
  • @ResponseBody: किसी विधि को संपूर्ण इकाई वापस करने की अनुमति देता है।
  • @RequestBody: आपको अनुरोध निकाय को किसी वस्तु में बदलने की अनुमति देता है।
  • @RequestParam: आपको एक संपत्ति को एक वस्तु से अलग करने की अनुमति देता है।
  • @PathVariable: आपको प्लेसहोल्डर को अनुरोध मान मैप करने की अनुमति देता है। यह डिलीट विधि को दी गई आईडी को डेटाबेस में मौजूदा मान के साथ मैप करता है।
  • @PostMapping: आपको संसाधन बनाने की अनुमति देता है।
  • @GetMapping: आपको संसाधन डेटा पढ़ने की अनुमति देता है।
  • @PutMapping: आपको संसाधनों को अपडेट करने की अनुमति देता है।
  • @DeleteMapping: आपको संसाधनों को हटाने की अनुमति देता है।

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

किसी डेटाबेस को किसी भी स्प्रिंग एप्लिकेशन से जोड़ने के लिए, आपको इसका उपयोग करने की आवश्यकता होगी application.properties संसाधन फ़ोल्डर के अंतर्गत फ़ाइल। यह फ़ाइल प्रारंभ में खाली है, इसलिए आप इसे उस डेटाबेस के लिए उपयुक्त गुणों से पॉप्युलेट कर सकते हैं जिसका आप उपयोग करना चाहते हैं। यह एप्लिकेशन एक MySQL डेटाबेस का उपयोग करेगा, इसलिए application.properties फ़ाइल में निम्न डेटा होगा:

spring.jpa.hibernate.ddl-auto=update
वसंत.जेपीए.ओपन-इन-व्यू = झूठा
spring.datasource.url=jdbc: mysql://${MYSQL_HOST: localhost}:3306/onlineshopaholics
spring.datasource.username=root
spring.datasource.password=securepw
spring.datasource.driver-class-name=com.mysql.cj.jdbc. चालक

ऊपर दिए गए डेटा से पता चलता है कि यह एप्लिकेशन "रूट" उपयोगकर्ता नाम और पासवर्ड के रूप में "सिक्योरपीडब्ल्यू" के साथ ऑनलाइनशॉपहोलिक्स नामक एक MySQL डेटाबेस से कनेक्ट होगा। आपका अगला कदम MySQL में डेटाबेस और ग्राहक तालिका बनाना है।

अनुरोध बनाना

ऐसे कई उपकरण हैं जिनका उपयोग आप अपने REST API का परीक्षण करने के लिए कर सकते हैं। पोस्टमैन एक लोकप्रिय REST API टेस्टिंग टूल है, और आप इसे अपने द्वारा बनाए गए सरल API का परीक्षण करने के लिए उपयोग कर सकते हैं। MySQL टेबल बनाने और स्प्रिंग एप्लिकेशन चलाने के बाद, आप पोस्टमैन लॉन्च कर सकते हैं और चार अनुरोध क्रियाओं के साथ प्रयोग कर सकते हैं।

पोस्ट अनुरोध

यह अनुरोध आपको REST API का उपयोग करके नए ग्राहक बनाने की अनुमति देगा। इस अनुरोध को पूरा करने के लिए, आपको अपने पोस्ट अनुरोध के शीर्षलेख अनुभाग में जाना होगा और एक नया शीर्षलेख (सामग्री-प्रकार) बनाना होगा। आपको इस हेडर के मान को application/json पर सेट करना चाहिए, क्योंकि आप JSON का उपयोग करके नए ग्राहक बना रहे होंगे।

अनुरोध के मुख्य भाग में, आपको प्रकार को कच्चे में बदलना होगा और अपना JSON सम्मिलित करना होगा। फिर आपको पोस्ट URL डालने की आवश्यकता होगी:

अनुरोध भेजने से निम्नलिखित प्रतिक्रिया वापस आ जाएगी:

आप देख सकते हैं कि अनुरोध सफल रहा, और नए ग्राहक के पास एक आईडी भी है।

अनुरोध प्राप्त करें

अब जब आपके पास एक ग्राहक है, तो आप इसे प्राप्त अनुरोध के साथ देख सकते हैं जो सभी ग्राहकों को लौटाता है:

या आईडी द्वारा प्रत्येक ग्राहक:

पुट रिक्वेस्ट

आप जेनेट को एक नए उपनाम और ईमेल के साथ अपडेट कर सकते हैं।

अनुरोध हटा दें

आप जेनेट को डेटाबेस से हटा भी सकते हैं।

JUnit का उपयोग करके अपने स्प्रिंग रेस्ट एपीआई का परीक्षण करें

स्प्रिंग बूट के साथ, आप स्प्रिंग की परीक्षण फ़ाइल का उपयोग करके किसी भी एप्लिकेशन (REST API सहित) का परीक्षण कर सकते हैं। स्प्रिंग बूट के लिए सॉफ्टवेयर परीक्षण महत्वपूर्ण है। प्रत्येक आरंभिक स्प्रिंग एप्लिकेशन परीक्षण के लिए JUnit का उपयोग करता है और आपको अपने REST API को अनुरोध भेजने की अनुमति देता है।