शुरुआती लोगों के लिए इस ट्यूटोरियल में, आप एक उदाहरण के रूप में लोकप्रिय इंटरनेट चक नॉरिस डेटाबेस (ICNDB) का उपयोग करके SwiftUI का उपयोग करके API कॉल करने की मूल बातें सीखेंगे। यह Swift और SwiftUI का उपयोग करके एक जोक को जल्दी और आसानी से प्रदर्शित करेगा।
आप देखेंगे कि कैसे क्रॉस-प्लेटफॉर्म फ्रेमवर्क SwiftUI हमें iOS, iPadOS, macOS, watchOS, ऐप क्लिप्स और tvOS पर सटीक समान कोड का उपयोग करने देता है, जो अन्यथा असंभव होता।
इसके साथ, आप Swift 5.5 में पेश किए गए async-await का उपयोग करेंगे, जो iOS 15.0 से नए ऑपरेटिंग सिस्टम पर चलने वाले iPhones सहित नए ऑपरेटिंग सिस्टम के लिए काम करता है। यह वास्तव में बटन के क्लिक पर UI थ्रेड को फ्रीज किए बिना एसिंक्रोनसली डेटा नेटवर्क कॉल करने के हमारे काम को सरल बनाता है।
मैं पहले आपको आवश्यक कोड परिवर्तन साझा करूंगा। फिर अगले भाग में, मैं कोड का संक्षिप्त विश्लेषण साझा करूंगा ताकि शुरुआती लोग समझ सकें कि क्या हो रहा है।
Swift और SwiftUI में API कॉल कैसे करें
सबसे पहले, आपको Xcode इंस्टॉल करने के लिए एक Mac की आवश्यकता होगी। एक बार इंस्टॉल हो जाने पर, Xcode खोलें और एक नया प्रोजेक्ट बनाएं। फिर iOS, macOS, tvOS, या watchOS के लिए "App" चुनें।
ContentView
बस अपने मौजूदा ContentView SwiftUI फ़ाइल को अपडेट करें एक बटन जोड़ने के लिए और जोक ICNDB API से वापस आने पर प्रदर्शित टेक्स्ट को रीफ्रेश करने के लिए State वेरिएबल का उपयोग करें:
import Foundation
import SwiftUI
struct ContentView: View {
@State private var joke: String = ""
var body: some View {
Text(joke)
Button {
Task {
let (data, _) = try await URLSession.shared.data(from: URL(string: "https://api.chucknorris.io/jokes/random")!)
let decodedResponse = try? JSONDecoder().decode(Joke.self, from: data)
joke = decodedResponse?.value ?? ""
}
} label: {
Text("जोक प्राप्त करें")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct Joke: Codable {
let value: String
}
एक जोक प्राप्त करें!
यदि आप बिल्ड/प्ले दबाते हैं, तो ऐप आपके द्वारा ऊपर चुने गए प्लेटफॉर्म पर बिल्ड होगा:
कोड विश्लेषण
यदि आप रैंडम जोक URL पर जाते हैं, तो आप देखेंगे कि डेटा JSON फॉर्मेट में है। आप उसे कॉपी कर सकते हैं और इसकी संरचना देखने के लिए JSON लिंटर का उपयोग कर सकते हैं ताकि यह पता लगा सकें कि Joke ऑब्जेक्ट की कौन सी प्रॉपर्टी आवश्यक है।
उसके आधार पर, आप ऊपर दिए गए कोड को निर्धारित करते हैं। आप JSON डेटा ऑब्जेक्ट से वास्तविक Swift क्लास या स्ट्रक्चर में जाने के लिए Codable प्रोटोकॉल (उर्फ इंटरफेस) का उपयोग करते हैं, और आप उस डेटा के लिए प्रॉपर्टीज बनाते हैं जिसे आप स्टोर करना चाहते हैं (हमारे मामले में value)।
JSONDecoder Codable ऑब्जेक्ट का उपयोग करके JSON स्ट्रिंग को पार्स करने में हमारी मदद करता है। यह प्लेटफॉर्म की परवाह किए बिना काम करता है क्योंकि ऐप लॉन्च होने पर लोड होने वाले पेज का नाम प्लेटफॉर्म की परवाह किए बिना ContentView ही होता है।
ऐप क्लिप्स
ऐप क्लिप्स Apple का ऐप स्टोर से पूरा एप्लिकेशन डाउनलोड किए बिना "ऐप क्लिप कोड" का उपयोग करके नेटिव ऐप कार्यक्षमता का उपयोग करने का नवीनतम तरीका है।
ऐप क्लिप्स iOS ऐप के समान काम करते हैं - एकमात्र अंतर यह है कि आप एक नया ऐप क्लिप प्रोजेक्ट नहीं बनाते हैं। आपको केवल एक मौजूदा iOS ऐप में ऐप क्लिप को टारगेट के रूप में जोड़ने की आवश्यकता है File -> New -> Target -> iOS -> App Clip पर जाकर जब Xcode में एक मौजूदा iOS ऐप खुला हो।
यदि आप iPhone/iPad विजेट्स के बारे में सोच रहे हैं, तो वे एनिमेट नहीं करते। इसलिए बटन क्लिक केवल संबंधित ऐप को खोलेंगे और बाहरी API के माध्यम से स्वतंत्र रूप से टेक्स्ट अपडेट नहीं कर सकते।
निष्कर्ष
इस लेख में, आपने SwiftUI से RESTful GET API कॉल करने का सबसे सरल संभव तरीका सीखा!
यदि आपके कोई प्रश्न हैं तो बेझिझक मुझसे संपर्क करें। मैंने इसे एक अन्य लेख का उपयोग करके समझा और मैंने इसे और सरल बनाने के बारे में सोचा। इसलिए अधिक विवरण और इस कोड को अधिक जटिल बनाने के तरीकों के लिए, उस लेख को देखें:
async/await in SwiftUI
एक SwiftUI ऐप को नए Swift कंकरेंसी का उपयोग करने के लिए कन्वर्ट करें और चमकदार सतह के नीचे क्या चल रहा है पता लगाएं।