TypeScript पर माइक्रोसर्विसेज़ के लिए API Gateway: एक संपूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: आपके प्रोजेक्ट को API Gateway की आवश्यकता क्यों है?

\n\n

कल्पना करें: आप TypeScript में एक स्टार्टअप या कॉर्पोरेट एप्लिकेशन लिख रहे हैं। आपके पास पहले से ही उपयोगकर्ता सेवा, ऑर्डर सेवा और सूचना सेवा है। उनमें से प्रत्येक अपने स्वयं के पोर्ट (या यहां तक कि अपने स्वयं के सर्वर) पर रहता है, HTTP के माध्यम से संचार करता है, अपने स्वयं के डेटाबेस का उपयोग करता है। सब कुछ काम करता है, लेकिन क्लाइंट (फ्रंटएंड, मोबाइल एप्लिकेशन) संघर्ष करने लगता है: प्रोफ़ाइल पेज को इकट्ठा करने के लिए, उसे विभिन्न सेवाओं से 4-5 अनुरोध करने होंगे, विभिन्न त्रुटि प्रारूपों से निपटना होगा, और प्रत्येक में प्रमाणित भी होना होगा।

\n\n

यहाँ API Gateway दृश्य में आता है — सभी क्लाइंट के लिए एक एकीकृत प्रवेश बिंदु। यह रूटिंग, प्रमाणीकरण, डेटा एकत्रीकरण, कैशिंग और यहां तक कि प्रतिक्रिया परिवर्तन का ध्यान रखता है। इस लेख में, हम शुरू से TypeScript में एक वास्तविक API Gateway लिखेंगे, पैटर्न और एंटी-पैटर्न को समझेंगे, और दिखाएंगे कि गलतियों से कैसे बचा जाए।

\n\n

सरल शब्दों में API Gateway क्या है

\n\n

API Gateway क्लाइंट और आपकी आंतरिक सेवाओं के बीच एक मध्यवर्ती परत है। क्लाइंट (ब्राउज़र, मोबाइल, बाहरी API) केवल Gateway पर दस्तक देता है। Gateway अनुरोध पथ को देखता है, टोकन की जांच करता है, और अनुरोध को उपयुक्त माइक्रोसर्विस पर रीडायरेक्ट करता है। कभी-कभी यह कई सेवाओं से प्रतिक्रिया को एक में भी एकत्रित करता है — इसे एकत्रीकरण कहा जाता है।

\n\n

TypeScript इकोसिस्टम में इसकी आवश्यकता क्यों है? क्योंकि TypeScript हमें प्रकार, इंटरफ़ेस और कठोरता प्रदान करता है, और Gateway सत्यापन और डेटा को एक समान अनुबंध में लाने के लिए एक आदर्श स्थान है।

\n\n

आर्किटेक्चर: यह TypeScript पर कैसे काम करता है

\n\n

आइए एक सरल लेकिन कार्यात्मक आर्किटेक्चर डिज़ाइन करें। हमारे पास होगा:

\n\n
    \n
  • Gateway (हमारी TypeScript सेवा) — पोर्ट 3000, एकमात्र प्रवेश बिंदु।
  • \n
  • उपयोगकर्ता सेवा (User Service) — पोर्ट 4001, REST API।
  • \n
  • ऑर्डर सेवा (Order Service) — पोर्ट 4002, REST API।
  • \n
  • सूचना सेवा (Notification Service) — पोर्ट 4003, REST API।
  • \n
\n\n

सभी आंतरिक सेवाएं अपने स्वयं के नेटवर्क (जैसे, Docker network) में रहती हैं और बाहर से दिखाई नहीं देती हैं। क्लाइंट केवल Gateway के साथ संचार करता है।

\n\n
// प्रोजेक्ट संरचना\ngateway/\n├── src/\n│   ├── routes/\n│   │   ├── userRoutes.ts\n│   │   ├── orderRoutes.ts\n│   │   └── notificationRoutes.ts\n│   ├── middleware/\n│   │   ├── authMiddleware.ts\n│   │   ├── rateLimiter.ts\n│   │   └── cacheMiddleware.ts\n│   ├── services/\n│   │   └── proxyService.ts\n│   ├── types/\n│   │   └── index.ts\n│   └── index.ts\n├── package.json\n└── tsconfig.json\n
\n\n

TypeScript पर बेसिक API Gateway लिखना

\n\n

आइए निर्भरताएं स्थापित करके शुरू करें। हमें Express (सबसे लोकप्रिय फ्रेमवर्क), प्रॉक्सी के लिए http-proxy-middleware, और कुछ उपयोगिताओं की आवश्यकता होगी।

\n\n
npm init -y\nnpm install express http-proxy-middleware cors helmet express-rate-limit\nnpm install -D typescript @types/node @types/express ts-node nodemon\n
\n\n

आइए tsconfig.json बनाएं:

\n\n
{\n  "compilerOptions": {\n    "target": "ES2020",\n    "module": "commonjs",\n    "outDir": "./dist",\n    "rootDir": "./src",\n    "strict": true,\n    "esModuleInterop": true,\n    "skipLibCheck": true,\n    "forceConsistentCasingInFileNames": true\n  },\n  "include": ["src/**/*"],\n  "exclude": ["node_modules"]\n}\n
\n\n

अब मुख्य फ़ाइल src/index.ts लिखते हैं:

\n\n
import express, { Request, Response } from 'express';\nimport cors from 'cors';\nimport helmet from 'helmet';\nimport { createProxyMiddleware } from 'http-proxy-middleware';\nimport { authMiddleware } from './middleware/authMiddleware';\nimport { rateLimiter } from './middleware/rateLimiter';\n\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\n// ग्लोबल middleware\napp.use(helmet());\napp.use(cors());\napp.use(express.json());\napp.use(rateLimiter);\n\n// उपयोगकर्ता सेवा के लिए प्रॉक्सी\napp.use('/api/users', auth                

ब्लॉग

पुस्तक अनुशंसाएँ