परिचय: आपके PHP प्रोजेक्ट को API Gateway की आवश्यकता क्यों है
\n\nकल्पना करें कि आप एक आधुनिक वेब एप्लिकेशन बना रहे हैं। आपके पास Laravel पर यूज़र सर्विस, Symfony पर ऑर्डर सर्विस, शुद्ध PHP पर पेमेंट सर्विस, और CRM तथा टेलीग्राम बॉट के साथ बाहरी इंटीग्रेशन हैं। क्लाइंट (मोबाइल ऐप, React पर SPA और पुरानी jQuery साइट) अलग-अलग एंडपॉइंट पर हिट करते हैं, टोकन में उलझते हैं, और आप हर हफ्ते CORS ठीक करते हैं।
\n\nपरिचित लग रहा है? यदि हाँ, तो आपको API Gateway की आवश्यकता है — आपकी सभी सर्विसेज के लिए एक एकल प्रवेश बिंदु। यह सिर्फ एक प्रॉक्सी नहीं है, बल्कि एक वास्तविक डिस्पैचर है जो रूटिंग, ऑथेंटिकेशन, कैशिंग और डेटा एग्रीगेशन का ध्यान रखता है।
\n\nइस लेख में, हम एक सरल लेकिन कार्यशील PHP API Gateway लिखना सीखेंगे जिसे किसी भी होस्टिंग पर डिप्लॉय किया जा सकता है। कोई जादू नहीं, केवल शुद्ध कोड और PHP पर माइक्रोसर्विसेज आर्किटेक्चर के लिए सर्वोत्तम अभ्यास।
\n\nAPI Gateway क्या है और PHP डेवलपर को इसकी आवश्यकता क्यों है
\n\nAPI Gateway (API गेटवे) एक सर्वर है जो क्लाइंट से सभी आने वाले अनुरोधों को प्राप्त करता है और उन्हें संबंधित माइक्रोसर्विसेज पर रीडायरेक्ट करता है। क्लाइंट को आंतरिक संरचना के बारे में कुछ नहीं पता: वह बस /api/users पर अनुरोध भेजता है, और Gateway खुद तय करता है कि इसे कहाँ भेजना है।
गेटवे के मुख्य कार्य:
\n- \n
- रूटिंग — URL या हेडर के आधार पर अनुरोधों को विभिन्न सर्विसेज पर रीडायरेक्ट करना। \n
- ऑथेंटिकेशन और ऑथराइजेशन — JWT टोकन, API-की की जाँच, एक्सेस प्रतिबंध। \n
- एग्रीगेशन — कई सर्विसेज से डेटा को एक प्रतिक्रिया में संयोजित करना (जैसे, यूज़र प्रोफाइल + उसके पिछले ऑर्डर)। \n
- कैशिंग — बार-बार अनुरोधित डेटा के कैश के माध्यम से बैकएंड पर लोड कम करना। \n
- Rate limiting — DDoS और सर्विसेज के ओवरलोड से सुरक्षा। \n
- प्रतिक्रिया रूपांतरण — विभिन्न क्लाइंट के लिए डेटा को एक समान प्रारूप में लाना। \n
लाभ स्पष्ट हैं: क्लाइंट भाग को सरल बनाना, सुरक्षा का केंद्रीकृत प्रबंधन, क्लाइंट को सूचित किए बिना बैकएंड बदलने की क्षमता। नुकसान — विफलता का एक अतिरिक्त बिंदु, लेकिन यह Gateway के प्रतिकृति द्वारा हल किया जाता है।
\n\nPHP में एक सरल API Gateway डिज़ाइन करना
\n\nहम बिना किसी फ्रेमवर्क के शुद्ध PHP में Gateway लिखेंगे ताकि आप सार को समझ सकें। लेकिन आप आसानी से कोड को Laravel, Symfony या Slim के लिए अनुकूलित कर सकते हैं।
\n\nहमारा गेटवे निम्नलिखित करेगा:
\n- \n
/api/users/*पर अनुरोध प्राप्त करना और Users सर्विस (पोर्ट 8081) पर रीडायरेक्ट करना \n /api/orders/*पर अनुरोध प्राप्त करना और Orders सर्विस (पोर्ट 8082) पर रीडायरेक्ट करना \n - अनुरोध को आगे बढ़ाने से पहले JWT टोकन की जाँच करना \n
- GET अनुरोधों को 60 सेकंड के लिए कैश करना \n
- डेटा एग्रीगेट करना:
/api/profileUsers और Orders से जानकारी एकत्र करेगा \n
चरण 1. रूट्स का कॉन्फ़िगरेशन
\n\nएक config.php फ़ाइल बनाएं जहाँ हम बताएंगे कि कौन से URL कहाँ जाते हैं:
<?php\n// config.php\nreturn [\n 'routes' => [\n '/api/users' => [\n 'target' => 'http://127.0.0.1:8081',\n 'auth' => true, // JWT आवश्यक\n 'cache' => false // कैश न करें (व्यक्तिगत डेटा)\n ],\n '/api/orders' => [\n 'target' => 'http://127.0.0.1:8082',\n 'auth' => true,\n 'cache' => 60 // 60 सेकंड कैश\n ],\n '/api/public' => [\n 'target' => 'http://127.0.0.1:8083',\n 'auth' => false,\n 'cache' => 120\n ],\n '/api/profile' => [ // एग्रीगेटेड एंडपॉइंट\n 'aggregate' => true,\n 'auth' => true,\n 'services' => [\n 'user' => 'http://127.0.0.1:8081/api/user',\n 'orders' => 'http://127.0.0.1:8082/api/order'