GraphQL और Swift का परिचय
\nGraphQL API के लिए एक क्वेरी भाषा है जो क्लाइंट को केवल वही डेटा प्राप्त करने की अनुमति देती है जिसकी उन्हें आवश्यकता होती है, और कुछ भी अतिरिक्त नहीं। iOS और macOS डेवलपर्स के लिए, GraphQL का एकीकरण कुशल और लचीले मोबाइल एप्लिकेशन बनाने के लिए नई संभावनाएं खोलता है। इस ट्यूटोरियल में, हम व्यावहारिक रूप से समझेंगे कि Swift प्रोजेक्ट में GraphQL API को कैसे कनेक्ट करें, बुनियादी क्वेरी और म्यूटेशन कैसे करें, और संभावित त्रुटियों को कैसे संभालें।
\nपारंपरिक REST के विपरीत, GraphQL एक ही अनुरोध में कई संसाधनों को क्वेरी करने की अनुमति देता है, जो सीमित ट्रैफ़िक वाले मोबाइल उपकरणों के लिए विशेष रूप से महत्वपूर्ण है। हम लोकप्रिय लाइब्रेरी Apollo iOS का उपयोग करेंगे - Swift पर GraphQL के साथ काम करने के लिए सबसे स्थिर और दस्तावेजित समाधान।
\n\nप्रोजेक्ट तैयार करना और Apollo iOS स्थापित करना
\nचरण 1: प्रोजेक्ट बनाना और निर्भरताएँ स्थापित करना
\nXcode खोलें और एक नया iOS (या macOS) प्रोजेक्ट बनाएं। GraphQL के साथ काम करने के लिए, हम Swift Package Manager (SPM) के माध्यम से Apollo iOS स्थापित करेंगे।
\n- \n
- Xcode में
File → Add Packagesचुनें \n - रिपॉजिटरी URL डालें:
https://github.com/apollographql/apollo-ios.git\n - नवीनतम स्थिर संस्करण चुनें (लेखन के समय — 1.15+) \n
- अपने टार्गेट में पैकेज जोड़ें \n
चरण 2: GraphQL स्कीमा से कोड जनरेट करना
\nApollo iOS कोड जनरेशन का उपयोग करता है: आप .graphql फ़ाइलों में क्वेरी का वर्णन करते हैं, और उपयोगिता टाइप किया हुआ Swift कोड बनाती है। इसके लिए आवश्यक है:
- \n
- प्रोजेक्ट में
GraphQLफ़ोल्डर बनाएं \n - वहाँ
schema.graphqlsफ़ाइल (आपके API की स्कीमा) रखें — आमतौर पर इसे introspection के माध्यम से प्राप्त किया जा सकता है \n - एक क्वेरी फ़ाइल बनाएं, उदाहरण के लिए
GetUser.graphql: \n
query GetUser($id: ID!) {\n user(id: $id) {\n id\n name\n email\n posts {\n title\n }\n }\n}\n\nफिर कोड जनरेटर चलाने के लिए एक Build Phase जोड़ें। Homebrew के माध्यम से Apollo CLI स्थापित करना सबसे आसान है:
\nbrew install apollo-ios-cli\n\nऔर प्रोजेक्ट की रूट डायरेक्टरी में कमांड चलाएं:
\n./apollo-ios-cli generate\n\nइसके बाद, Sources/API फ़ोल्डर में डेटा मॉडल के साथ जनरेटेड Swift फ़ाइलें दिखाई देंगी।
बुनियादी GraphQL क्वेरी निष्पादित करना
\nApollo क्लाइंट सेटअप करना
\nअपने GraphQL एंडपॉइंट का URL निर्दिष्ट करते हुए Apollo क्लाइंट का एक इंस्टेंस बनाएं। यह आमतौर पर AppDelegate या एक अलग सर्विस क्लास में किया जाता है:
\n\nimport Apollo\n\nclass NetworkService {\n static let shared = NetworkService()\n private(set) lazy var apollo: ApolloClient = {\n let url = URL(string: "https://your-api.com/graphql")!\n return ApolloClient(url: url)\n }()\n}\n\nडेटा क्वेरी (Query)
\nअब हम उपयोगकर्ता प्राप्त करने के लिए क्वेरी निष्पादित करेंगे। जनरेटेड कोड एक GetUserQuery संरचना बनाएगा:
import Foundation\n\nclass UserViewModel: ObservableObject {\n @Published var user: User?\n @Published var errorMessage: String?\n \n func fetchUser(id: String) {\n NetworkService.shared.apollo.fetch(query: GetUserQuery(id: id)) { [weak self] result in\n DispatchQueue.main.async {\n switch result {\n case .success(let graphQLResult):\n if let userData = graphQLResult.data?.user {\n self?.user = User(\n id: userData.id,\n name: userData.name,\n email: userData.email\n )\n }\n case .failure(let error):\n self?.errorMessage = "त्रुटि: \\(error.localizedDescription)"\n }\n }\n }\n }\n}\n\nध्यान दें: हम UI को प्रतिक्रियाशील रूप से अपडेट करने के लिए @Published का उपयोग कर रहे हैं