API Gateway Swift माइक्रोसर्विसेज: एकीकृत सिस्टम गाइड

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

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

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

Swift सर्विसेज के लिए API Gateway: माइक्रोसर्विसेज के बीच पुल बनाना

\n\n

कल्पना करें कि आपका backend एक बड़ा शॉपिंग मॉल है। अंदर दर्जनों दुकानें (माइक्रोसर्विसेज) हैं: लॉगिन, प्रोडक्ट कैटलॉग, कार्ट, पेमेंट, नोटिफिकेशन। क्लाइंट (iOS ऐप) को हर दुकान में अलग-अलग जाना पड़े - यह अव्यवस्थित, धीमा और असुरक्षित है। API Gateway एक ही जगह पर मुख्य द्वार, सुरक्षा और नेविगेटर का काम करता है। यह रिक्वेस्ट लेता है, पास चेक करता है, सही विभाग में भेजता है और रिजल्ट लौटाता है।

\n\n

Swift की दुनिया में, जहाँ Vapor और Hummingbird तेज़ी से लोकप्रिय हो रहे हैं, अपना खुद का API Gateway बनाना बड़े प्रोजेक्ट्स के लिए ज़रूरी है। आज हम सीखेंगे कि Swift में एक हल्का gateway कैसे बनाएं जो आपकी सर्विसेज को एक इकोसिस्टम में जोड़े।

\n\n

Swift आर्किटेक्चर में API Gateway क्यों ज़रूरी है?

\n\n

जब आपके पास 2-3 माइक्रोसर्विसेज हों, तो क्लाइंट सीधे बात कर सकता है। लेकिन जब 10+ हों (फिनटेक, e-commerce या SaaS में आम), तो समस्याएँ आती हैं:

\n\n
    \n
  • भारी क्लाइंट कोड - हर सर्विस का अपना endpoint, error format और auth प्रोटोकॉल
  • \n
  • सुरक्षा कमज़ोरियाँ - हर सर्विस को खुद CORS, rate limiting और JWT चेक करना पड़ता है
  • \n
  • रीफैक्टरिंग में मुश्किल - सर्विस का नाम बदला? सभी क्लाइंट का कोड बदलना होगा
  • अनावश्यक ट्रैफ़िक - एक पेज लोड करने के लिए क्लाइंट 5 रिक्वेस्ट करता है
\n\n

API Gateway इन समस्याओं को हल करता है और एक ही एंट्री पॉइंट बन जाता है। यह कई माइक्रोसर्विसेज से डेटा इकट्ठा करके एक जवाब दे सकता है, सुरक्षा नीतियाँ लागू कर सकता है और सभी रिक्वेस्ट को लॉग कर सकता है। Swift डेवलपर्स के लिए, यह गेटवे लेवल पर भाषा की सख्त टाइपिंग का उपयोग करने का मौका है।

\n\n

टूल चुनना: Vapor + Hummingbird

\n\n

Swift में API Gateway बनाने के लिए Vapor सबसे अच्छा है - यह इकोसिस्टम का सबसे परिपक्व वेब फ्रेमवर्क है। इसमें middleware, रूटिंग, क्लाइंट रिक्वेस्ट (Client के ज़रिए) और async/await सपोर्ट है। विकल्प Hummingbird (हल्का, तेज़, Apple का) है, लेकिन उदाहरण के लिए हम Vapor का उपयोग करेंगे क्योंकि इसके डॉक्यूमेंटेशन बेहतर हैं।

\n\n

हमारा gateway तीन काम करेगा:

\n
    \n
  • रिक्वेस्ट को सही माइक्रोसर्विस पर भेजना (प्रॉक्सी)
  • \n
  • JWT के ज़रिए ऑथेंटिकेशन
  • \n
  • दो सर्विसेज से डेटा जोड़कर एक जवाब देना (एग्रीगेशन)
  • \n
\n\n

चरण 1. बेसिक प्रोजेक्ट स्ट्रक्चर

\n\n

नया Vapor प्रोजेक्ट बनाएँ:

\n
vapor new APIGateway --template=api\ncd APIGateway
\n\n

Package.swift में JWT के लिए डिपेंडेंसी जोड़ें:

\n
.package(url: "https://github.com/vapor/jwt.git", from: "4.0.0")
\n\n

और target में शामिल करें:

\n
.target(name: "App", dependencies: [\n    .product(name: "Vapor", package: "vapor"),\n    .product(name: "JWT", package: "jwt")\n])
\n\n

चरण 2. ऑथेंटिकेशन के लिए Middleware

\n\n

एक middleware बनाएँ जो JWT टोकन चेक करे और यूज़र की जानकारी आगे भेजे। Swift में API Gateway का यह क्लासिक पैटर्न है:

\n\n
import Vapor\nimport JWT\n\nstruct JWTAuthenticator: AsyncMiddleware {\n    func respond(to request: Request, chainingTo next: AsyncResponder) async throws -> Response {\n        guard let token = request.headers.bearerAuthorization?.token else {\n            throw Abort(.unauthorized, reason: "Bearer टोकन नहीं मिला")\n        }\n        \n        // सिग्नेचर और एक्सपायरी चेक करें\n        let payload = try await request.jwt.verify(token, as: UserPayload.self)\n        \n        // यूज़र को रिक्वेस्ट स्टोरेज में सेव करें\n        request.storage.set(UserPayloadKey.self, to: payload)\n        \n        return try await next.respond(to: request)\n    }\n}\n\nstruct UserPayload: JWTPayload {\n    var userID: UUID\n    var role: String\n    var exp: ExpirationClaim\n    \n    func verify(using signer: JWTSigner) throws {\n                

ब्लॉग

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