Apollo iOS: Swift एप्लिकेशन के लिए शक्तिशाली GraphQL क्लाइंट
\n\nApollo iOS Apple प्लेटफ़ॉर्म: iOS, macOS, tvOS और watchOS पर GraphQL API के साथ काम करने के लिए एक आधुनिक, टाइप-सुरक्षित लाइब्रेरी है। Apollo GraphQL कंपनी द्वारा विकसित, यह डेवलपर्स को क्वेरी, म्यूटेशन और सब्सक्रिप्शन निष्पादित करने के लिए सुविधाजनक उपकरण प्रदान करता है, जो आपकी GraphQL स्कीमा के आधार पर Swift में स्वचालित रूप से सख्ती से टाइप किया गया कोड उत्पन्न करता है।
\n\nयह लाइब्रेरी आधुनिक मोबाइल और डेस्कटॉप एप्लिकेशन बनाने के लिए आदर्श है, जहाँ डेटा के साथ लचीला काम, कैशिंग और उच्च प्रदर्शन की आवश्यकता होती है। Apollo iOS मैन्युअल JSON पार्सिंग को समाप्त करता है और कंपाइलेशन चरण में पूर्ण टाइप सुरक्षा सुनिश्चित करता है।
\n\nमुख्य विशेषताएँ
\n- \n
- स्वचालित कोड जनरेशन — .graphql फ़ाइलों और सर्वर स्कीमा के आधार पर टाइप किए गए डेटा मॉडल, क्वेरी और म्यूटेशन बनाए जाते हैं। \n
- सामान्यीकृत कैशिंग — बिल्ट-इन कैश डेटा बदलने पर UI को स्वचालित रूप से अपडेट करता है, ऑब्जेक्ट डुप्लिकेशन से बचाता है। \n
- WebSocket के माध्यम से सब्सक्रिप्शन सपोर्ट — चैट, सूचनाओं और अन्य गतिशील डेटा के लिए रीयल-टाइम अपडेट। \n
- SwiftUI और Combine के साथ एकीकरण — रिएक्टिव प्रोग्रामिंग के लिए नेटिव एसिंक्रोनस Publisher और ObservableObject। \n
- मल्टीथ्रेडिंग — सभी नेटवर्क अनुरोध बैकग्राउंड में निष्पादित होते हैं, मुख्य थ्रेड UI के लिए मुक्त रहता है। \n
- फ़ाइल अपलोड सपोर्ट — इमेज और दस्तावेज़ भेजने के लिए मल्टीपार्ट अनुरोधों के साथ काम करना। \n
Swift Package Manager के माध्यम से इंस्टॉलेशन
\nXcode या Package.swift के माध्यम से अपने प्रोजेक्ट में Apollo iOS जोड़ें:
\n// Package.swift\ndependencies: [\n .package(url: "https://github.com/apollographql/apollo-ios.git", \n from: "1.0.0")\n]\n\nउदाहरण: क्लाइंट सेटअप और क्वेरी निष्पादन
\nएक क्लाइंट इंस्टेंस बनाएँ और उपयोगकर्ताओं की सूची प्राप्त करने के लिए एक सरल GraphQL क्वेरी निष्पादित करें:
\nimport Apollo\n\n// 1. क्लाइंट बनाएँ\nlet url = URL(string: "https://api.example.com/graphql")!\nlet store = ApolloStore()\nlet client = ApolloClient(url: url, store: store)\n\n// 2. क्वेरी परिभाषित करें (फ़ाइल Users.graphql)\n// query GetUsers { users { id name email } }\n\n// 3. क्वेरी निष्पादित करें\nclient.fetch(query: GetUsersQuery()) { result in\n switch result {\n case .success(let graphQLResult):\n if let users = graphQLResult.data?.users {\n for user in users {\n print("\\(user.name) — \\(user.email)")\n }\n }\n case .failure(let error):\n print("त्रुटि: \\(error.localizedDescription)")\n }\n}\n\nम्यूटेशन के साथ काम करना (डेटा बदलना)
\nनया उपयोगकर्ता बनाने के लिए म्यूटेशन का उदाहरण:
\n// mutation CreateUser($name: String!, $email: String!) {\n// createUser(name: $name, email: $email) { id name email }\n// }\n\nlet mutation = CreateUserMutation(name: "इवान पेत्रोव", \n email: "ivan@example.com")\n\nclient.perform(mutation: mutation) { result in\n switch result {\n case .success(let graphQLResult):\n if let newUser = graphQLResult.data?.createUser {\n print("उपयोगकर्ता बनाया गया: \\(newUser.id)")\n }\n case .failure(let error):\n print("निर्माण त्रुटि: \\(error)")\n }\n}\n\nसब्सक्रिप्शन (रीयल-टाइम अपडेट)
\nरीयल-टाइम डेटा प्राप्त करने के लिए सब्सक्रिप्शन का उपयोग करें। WebSocket ट्रांसपोर्ट आवश्यक है:
\nimport ApolloWebSocket\n\nlet webSocketTransport = WebSocketTransport(\n request: URLRequest(url: URL(string: "wss://api.example.com/graphql")!)\n)\nlet store = ApolloStore()\nlet client = ApolloClient(networkTransport: webSocketTransport, \n store: store)\n\n// subscription OnUserAdded { userAdded { id name } }\nlet subscription =