परिचय: आपके प्रोजेक्ट को API गेटवे की आवश्यकता क्यों है?
\n\nकल्पना करें कि आप एक आर्किटेक्ट हैं, जो एक आधुनिक इमारत डिज़ाइन कर रहे हैं। हर कमरे के लिए सौ अलग-अलग दरवाजे बनाने के बजाय, आप एक केंद्रीय प्रवेश द्वार बनाते हैं जिसमें रिसेप्शन, सुरक्षा और नेविगेशन होता है। Java सेवाओं के लिए API गेटवे बिल्कुल इसी तरह काम करता है — यह आपकी माइक्रोसर्विस आर्किटेक्चर में एक एकल प्रवेश बिंदु है।
\n\nजब मैंने Java पर माइक्रोसर्विसेज़ के साथ काम करना शुरू किया, तो सबसे पहली चीज़ जिसका सामना किया — वह थी अराजकता। क्लाइंट सीधे दर्जनों सेवाओं में प्रवेश कर रहे थे, प्रत्येक का अपना पोर्ट, प्रमाणीकरण और त्रुटि प्रारूप था। यह एक ऑर्केस्ट्रा को नियंत्रित करने की कोशिश करने जैसा था, जहाँ प्रत्येक संगीतकार कंडक्टर की सुने बिना अपनी भूमिका निभा रहा हो। समाधान Java API गेटवे के रूप में आया।
\n\nइस लेख में हम केवल सिद्धांत के बारे में बात नहीं करेंगे। हम वास्तविक उदाहरणों का विश्लेषण करेंगे, Spring Cloud Gateway का उपयोग करके Java में कोड लिखेंगे, और आप इन ज्ञान को तुरंत अपने प्रोजेक्ट में लागू कर पाएंगे। क्या आप अराजकता को व्यवस्था में बदलने के लिए तैयार हैं? चलिए शुरू करते हैं।
\n\nAPI गेटवे क्या है और इसकी आवश्यकता क्यों है?
\n\nAPI गेटवे (श्लूज़ API) — यह क्लाइंट (वेब एप्लिकेशन, मोबाइल एप्लिकेशन, बाहरी सेवाएँ) और आपकी आंतरिक माइक्रोसर्विसेज़ के बीच एक मध्यवर्ती परत है। यह सभी "गंदे काम" को संभालता है: रूटिंग, प्रमाणीकरण, लोड बैलेंसिंग, कैशिंग और मॉनिटरिंग।
\n\nJava इकोसिस्टम में, इसके लिए अक्सर Spring Cloud Gateway का उपयोग किया जाता है — Spring WebFlux पर आधारित एक रिएक्टिव गेटवे, जो अविश्वसनीय रूप से तेज़ और लचीला है।
\n\nJava माइक्रोसर्विसेज़ में API गेटवे के मुख्य कार्य:
\n- \n
- एकल प्रवेश बिंदु — सभी अनुरोध एक ही होस्ट:पोर्ट के माध्यम से जाते हैं \n
- रूटिंग — अनुरोधों को आवश्यक सेवाओं की ओर पुनर्निर्देशित करना \n
- लोड बैलेंसिंग — इंस्टेंस के बीच ट्रैफ़िक का वितरण \n
- सुरक्षा — JWT टोकन, API कुंजियों की जाँच \n
- प्रतिक्रिया एकत्रीकरण — कई सेवाओं से डेटा का संयोजन \n
- रेट लिमिटिंग — अनुरोधों की आवृत्ति को सीमित करना \n
API गेटवे के बिना, आपकी आर्किटेक्चर स्पेगेटी कोड जैसी दिखती है: प्रत्येक क्लाइंट हर सेवा के बारे में जानता है। इसके साथ, आपको एक स्वच्छ, प्रबंधनीय प्रणाली मिलती है।
\n\nSpring Cloud Gateway के साथ Java पर API गेटवे बनाना
\n\nआइए सिद्धांत से अभ्यास की ओर बढ़ते हैं। मैं दिखाऊंगा कि कैसे सिर्फ 15 मिनट में एक कार्यशील Java सेवाओं के लिए API गेटवे बनाया जाए।
\n\nचरण 1: निर्भरताएँ और प्रोजेक्ट सेटअप
\n\nएक नया Spring Boot प्रोजेक्ट बनाएँ (मैं संस्करण 3.x की सलाह देता हूँ) और pom.xml में निम्नलिखित निर्भरताएँ जोड़ें:
<dependency>\n <groupId>org.springframework.cloud</groupId>\n <artifactId>spring-cloud-starter-gateway</artifactId>\n</dependency>\n\n<!-- Service Discovery में पंजीकरण के लिए (वैकल्पिक) -->\n<dependency>\n <groupId>org.springframework.cloud</groupId>\n <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>\n</dependency>\n\n<dependencyManagement> में Spring Cloud के लिए BOM जोड़ना न भूलें:
<dependencyManagement>\n <dependencies>\n <dependency>\n <groupId>org.springframework.cloud</groupId>\n <artifactId>spring-cloud-dependencies</artifactId>\n <version>2023.0.1</version>\n <type>pom</type>\n <scope>import</scope>\n </dependency>\n </dependencies>\n</dependencyManagement>\n\nचरण 2: YAML के माध्यम से रूट कॉन्फ़िगरेशन
\n\nJava अनुरोध रूटिंग को कॉन्फ़िगर करने का सबसे आसान तरीका application.yml के माध्यम से है। यहाँ एक उदाहरण है जो उपयोगकर्ता सेवाओं के लिए अनुरोधों को पुनर्निर्देशित करता है और