परिचय: GraphQL और Swift क्यों?
आधुनिक iOS और macOS डेवलपमेंट में सर्वर के साथ इंटरैक्ट करने के लिए लचीले और कुशल तरीकों की आवश्यकता होती है। पारंपरिक REST API अक्सर over-fetching (अनावश्यक डेटा प्राप्त करना) या under-fetching (डेटा की कमी) की समस्या पैदा करते हैं। GraphQL इन समस्याओं को हल करता है, जिससे क्लाइंट एक ही अनुरोध में केवल वही डेटा मांग सकता है जिसकी उसे आवश्यकता है।
इस ट्यूटोरियल में, हम Swift में एक पूर्ण एप्लिकेशन बनाएंगे जो GraphQL API के साथ इंटरैक्ट करेगा। आप सीखेंगे कि प्रोजेक्ट कैसे सेटअप करें, क्वेरी, म्यूटेशन कैसे करें और त्रुटियों को कैसे संभालें। क्लाइंट के रूप में हम Apollo iOS का उपयोग करेंगे - Apple इकोसिस्टम में GraphQL के साथ काम करने के लिए सबसे लोकप्रिय लाइब्रेरी।
प्रोजेक्ट सेटअप और Apollo iOS की स्थापना
नया प्रोजेक्ट बनाना
Xcode खोलें और एक नया iOS या macOS App प्रोजेक्ट बनाएं। इसे GraphQLDemo नाम दें।
Swift Package Manager के माध्यम से Apollo iOS स्थापित करना
- Xcode में File → Add Packages... पर जाएं।
- Apollo रिपॉजिटरी का URL डालें:
https://github.com/apollographql/apollo-ios.git - नवीनतम स्थिर संस्करण चुनें और Add Package पर क्लिक करें।
- सुनिश्चित करें कि पैकेज आपके एप्लिकेशन के target में जोड़ा गया है।
GraphQL स्कीमा से कोड जनरेशन
Apollo टाइप-सुरक्षित क्लासेस बनाने के लिए कोड जनरेशन का उपयोग करता है। इसके लिए हमें एक स्कीमा फ़ाइल (schema.graphqls) और क्वेरी वाली फ़ाइलें (.graphql) चाहिए।
प्रोजेक्ट में GraphQL नामक फ़ोल्डर बनाएं और उसमें ये डालें:
schema.graphqls— अपने API की स्कीमा डाउनलोड करें या सार्वजनिक स्कीमा का उपयोग करें (जैसे, Countries GraphQL API)।Queries.graphql— आपकी क्वेरी वाली फ़ाइल।
Queries.graphql की सामग्री का उदाहरण:
query GetCountries { countries { code name capital currency }}अब कोड जनरेशन के लिए Build Phase जोड़ें। Xcode में: Target → Build Phases → + → New Run Script Phase। यह स्क्रिप्ट डालें:
cd "${SRCROOT}/${TARGET_NAME}"./Pods/Apollo/scripts/run-bundled-codegen.sh codegen:generate --target=swift --includes=./**/*.graphql --localSchemaFile=./schema.graphqls ./GraphQL/API.swiftनोट: Apollo iOS के आधुनिक संस्करणों में apollo-ios-cli का उपयोग किया जाता है। नवीनतम निर्देशों के लिए आधिकारिक दस्तावेज़ीकरण देखने की अनुशंसा की जाती है।
GraphQL क्वेरी निष्पादित करना (Queries)
Apollo क्लाइंट को इनिशियलाइज़ करना
Apollo के साथ काम करने के लिए एक मैनेजर बनाएं। NetworkManager.swift फ़ाइल खोलें:
import Foundationimport Apollo
class NetworkManager { static let shared = NetworkManager() private(set) lazy var apollo: ApolloClient = { let url = URL(string: "https://countries.trevorblades.com/")! return ApolloClient(url: url) }()}क्वेरी निष्पादित करना
अब अपने ViewController में GetCountries क्वेरी निष्पादित करें:
import UIKit
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() fetchCountries() } private func fetchCountries() { NetworkManager.shared.apollo.fetch(query: GetCountriesQuery()) { result in switch result { case .success(let graphQLResult): if let countries = graphQLResult.data?.countries { for country in countries { print("\\(country.name) - \\(country.capital ?? "N/A")") }