Swift (iOS/macOS) के लिए GraphQL लाइब्रेरीज़: पूर्ण गाइड
GraphQL API के लिए एक आधुनिक क्वेरी भाषा है, जो क्लाइंट को केवल वही डेटा माँगने की अनुमति देती है जिसकी उन्हें आवश्यकता है। iOS और macOS के लिए एप्लिकेशन बनाने वाले Swift डेवलपर्स के लिए, GraphQL सर्वर के साथ एकीकरण को सरल बनाने वाली शक्तिशाली लाइब्रेरीज़ मौजूद हैं। इस लेख में, हम दो मुख्य लाइब्रेरीज़ पर विचार करेंगे: Apollo iOS और Relay (Swift रैपर के माध्यम से), साथ ही व्यावहारिक कोड उदाहरण भी देंगे।
GraphQL क्या है और यह Swift के लिए क्यों महत्वपूर्ण है?
GraphQL डेटा के overfetching और underfetching की समस्या को हल करता है, जो अक्सर REST API का उपयोग करते समय उत्पन्न होती है। Swift में, यह मोबाइल एप्लिकेशन के लिए विशेष रूप से प्रासंगिक है, जहाँ डेटा का प्रत्येक अतिरिक्त किलोबाइट प्रदर्शन और लोडिंग समय को प्रभावित कर सकता है। iOS/macOS के लिए GraphQL के मुख्य लाभ:
- लचीली क्वेरी — क्लाइंट स्वयं तय करता है कि कौन से फ़ील्ड प्राप्त करने हैं
- मजबूत टाइपिंग — GraphQL स्कीमा स्वचालित रूप से Swift प्रकार उत्पन्न करती हैं
- सब्सक्रिप्शन के लिए समर्थन — WebSocket के माध्यम से रीयल-टाइम अपडेट
- एकल प्रवेश बिंदु — सभी क्वेरी के लिए एक endpoint
Apollo iOS लाइब्रेरी
Apollo iOS Swift के लिए सबसे लोकप्रिय GraphQL लाइब्रेरी है, जिसे Apollo GraphQL कंपनी द्वारा विकसित किया गया है। यह GraphQL के साथ काम करने के लिए उपकरणों का एक पूरा सेट प्रदान करती है: कोड जनरेशन से लेकर कैशिंग और त्रुटि प्रबंधन तक।
Apollo iOS की स्थापना
स्थापना के लिए Swift Package Manager का उपयोग करें। अपने Package.swift में निर्भरता जोड़ें:
// swift-tools-version:5.7import PackageDescription
let package = Package( name: "MyApp", dependencies: [ .package(url: "https://github.com/apollographql/apollo-ios.git", from: "1.0.0") ], targets: [ .target(name: "MyApp", dependencies: [ .product(name: "Apollo", package: "apollo-ios") ]) ])CocoaPods या Carthage के माध्यम से भी स्थापित किया जा सकता है, लेकिन SPM अनुशंसित तरीका है।
Apollo क्लाइंट का कॉन्फ़िगरेशन
अपने GraphQL सर्वर के URL के साथ ApolloClient का एक इंस्टेंस बनाएँ:
import Apollo
class NetworkManager { static let shared = NetworkManager() private(set) lazy var apollo: ApolloClient = { let url = URL(string: "https://api.example.com/graphql")! return ApolloClient(url: url) }()}Apollo iOS का उपयोग करके क्वेरी का उदाहरण
मान लीजिए, आपके पास User प्रकार और id, name, email फ़ील्ड वाली एक स्कीमा है। एक क्वेरी बनाते हैं:
import Apollo
// GraphQL क्वेरी को परिभाषित करें (आमतौर पर .graphql फ़ाइल में)let query = """ query GetUser($id: ID!) { user(id: $id) { id name email } }"""
// क्वेरी निष्पादित करेंNetworkManager.shared.apollo.fetch(query: query, variables: ["id": "123"]) { result in switch result { case .success(let graphQLResult): if let user = graphQLResult.data?.user { print("User: \\(user.name), Email: \\(user.email)") } case .failure(let error): print("Error: \\(error)") }}ध्यान दें: यदि आप इसके कोड जनरेशन टूल का उपयोग करते हैं, तो Apollo स्वचालित रूप से आपकी क्वेरी के लिए Swift प्रकार (जैसे, GetUserQuery) उत्पन्न करता है। इसके लिए, अपनी स्कीमा के साथ apollo-ios-cli चलाएँ।
म्यूटेशन और सब्सक्रिप्शन
Apollo म्यूटेशन (डेटा बदलना) और सब्सक्रिप्शन (रीयल-टाइम) का समर्थन करता है। म्यूटेशन का उदाहरण:
let mutation = """ mutation UpdateUser($id: ID!, $name: String!) { updateUser(id: $id, name: $name) { id name } }"""
NetworkManager.shared.apollo.pe