Swift पर GraphQL के साथ काम करने के लिए Apollo iOS लाइब्रेरी
Apollo iOS Apple इकोसिस्टम में GraphQL के साथ काम करने के लिए एक शक्तिशाली और लचीली लाइब्रेरी है। यह iOS और macOS डेवलपर्स को GraphQL सर्वर पर क्वेरी, म्यूटेशन और सब्सक्रिप्शन निष्पादित करने के लिए एक सुविधाजनक उपकरण प्रदान करती है। REST API के विपरीत, GraphQL क्लाइंट को केवल आवश्यक डेटा का अनुरोध करने की अनुमति देता है, जिससे ट्रैफ़िक की मात्रा कम होती है और अनुप्रयोगों का काम तेज़ होता है। Apollo iOS Swift को पूरी तरह से सपोर्ट करता है, जिसमें async/await, Combine और SwiftUI जैसी भाषा की आधुनिक क्षमताएँ शामिल हैं।
Apollo iOS की मुख्य विशेषताएँ
- कोड जनरेशन: GraphQL स्कीमा के आधार पर टाइप-सुरक्षित डेटा मॉडल का स्वचालित निर्माण।
- कैशिंग: बार-बार किए जाने वाले अनुरोधों को अनुकूलित करने के लिए सामान्यीकृत कैश का अंतर्निहित समर्थन।
- Swift Concurrency सपोर्ट: एसिंक्रोनस संचालन के लिए async/await के साथ पूर्ण एकीकरण।
- WebSocket के माध्यम से सब्सक्रिप्शन: GraphQL subscriptions का उपयोग करके रीयल-टाइम अपडेट का कार्यान्वयन।
- Combine और SwiftUI: Apple के रिएक्टिव फ्रेमवर्क के साथ उपयोग की संभावना।
- मल्टीप्लेटफ़ॉर्म: iOS, macOS, tvOS और watchOS पर काम करता है।
लाइब्रेरी की स्थापना
Apollo iOS स्थापित करने के लिए Swift Package Manager का उपयोग करें। मेनू File → Add Packages के माध्यम से Xcode में पैकेज जोड़ें और URL निर्दिष्ट करें:
https://github.com/apollographql/apollo-ios.gitसंस्करण: नवीनतम स्थिर (लेखन के समय — 1.15.0)।
Apollo Client सेटअप
पहला कदम — आपके GraphQL सर्वर के URL के साथ ApolloClient का एक इंस्टेंस बनाना है। मूल सेटअप का उदाहरण:
import Apollo
class NetworkService { static let shared = NetworkService() private(set) lazy var apollo: ApolloClient = { let url = URL(string: "https://api.example.com/graphql")! return ApolloClient(url: url) }()}क्वेरी निष्पादित करना (Queries)
Apollo iOS GraphQL स्कीमा के आधार पर कोड जनरेट करता है। पहले .graphql फ़ाइल में क्वेरी परिभाषित करें:
query GetUser($id: ID!) { user(id: $id) { id name email posts { title } }}कोड जनरेशन के बाद क्वेरी निष्पादित करें:
import Apollo
func fetchUser(id: String) async throws -> GetUserQuery.Data.User? { let query = GetUserQuery(id: id) let result = try await NetworkService.shared.apollo.fetch(query: query) return result.data?.user}म्यूटेशन (Mutation)
डेटा बदलने के लिए म्यूटेशन का उपयोग करें। एक नया पोस्ट बनाने का उदाहरण:
mutation CreatePost($title: String!, $content: String!) { createPost(input: { title: $title, content: $content }) { id title createdAt }}Swift में म्यूटेशन निष्पादित करना:
func createPost(title: String, content: String) async throws -> CreatePostMutation.Data.CreatePost? { let mutation = CreatePostMutation(title: title, content: content) let result = try await NetworkService.shared.apollo.perform(mutation: mutation) return result.data?.createPost}सब्सक्रिप्शन के साथ काम करना (Subscriptions)
रीयल-टाइम अपडेट के लिए सब्सक्रिप्शन का उपयोग करें। नए संदेशों की सदस्यता लेने का उदाहरण:
subscription OnNewMessage { newMessage { id text sender { name } }}Combine का उपयोग करके Swift में कार्यान्वयन:
import Combine
var cancellables = Set<AnyCancellable>()
func subscribeToMessages() { let subscription = OnNewMessageSubscription() NetworkService.shared.apollo.subscribe(subscription: subscription) .sink { completion in print("Subscription