Swift पर HTTP क्लाइंट: A से Z तक सही तरीके से अनुरोध करना

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: Swift पर HTTP के साथ काम करना क्यों महत्वपूर्ण है

\n

आधुनिक मोबाइल और डेस्कटॉप एप्लिकेशन शायद ही कभी अलग-थलग रहते हैं। लगभग कोई भी एप्लिकेशन - मौसम विजेट से लेकर बैंकिंग क्लाइंट तक - सर्वर के साथ डेटा का आदान-प्रदान करता है। इसके लिए HTTP प्रोटोकॉल का उपयोग किया जाता है, और Swift (iOS/macOS) की ओर मुख्य उपकरण फ्रेमवर्क Foundation और इसका क्लास URLSession है।

\n

इस लेख में, हम Swift पर HTTP क्लाइंट को सही तरीके से बनाने के तरीके पर चर्चा करेंगे: सरल GET अनुरोध से लेकर जटिल त्रुटि प्रबंधन और JSON के साथ काम करने तक। यह सामग्री iOS डेवलपमेंट से परिचित होने वाले शुरुआती और अपने ज्ञान को व्यवस्थित करने वाले अनुभवी डेवलपर्स दोनों के लिए उपयोगी होगी।

\n

हम async/await (Swift 5.5+) के साथ आधुनिक दृष्टिकोण पर विचार करेंगे, जो कोड को साफ और पढ़ने योग्य बनाता है, साथ ही पिछड़ी संगतता के लिए क्लोजर (completion handlers) के साथ क्लासिक विधियों को भी शामिल करेंगे।

\n\n

URLSession की मूल बातें: निर्माण और कॉन्फ़िगरेशन

\n

क्लास URLSession Swift में नेटवर्क अनुरोधों का मुख्य "कंडक्टर" है। यह कनेक्शन, कैशिंग और प्रमाणीकरण का प्रबंधन करता है। अनुरोध करने से पहले, आपको सत्र का एक उदाहरण बनाना होगा।

\n\n

सत्रों के प्रकार

\n
    \n
  • Shared (singleton): URLSession.shared — बिना कस्टमाइज़ेशन के सरल सत्र। बुनियादी अनुरोधों के लिए उपयुक्त।
  • \n
  • Default: URLSession(configuration: .default) — टाइमआउट, कैश और हेडर को कॉन्फ़िगर करने की अनुमति देता है।
  • \n
  • Ephemeral: URLSession(configuration: .ephemeral) — डिस्क पर कैश और कुकीज़ को सहेजता नहीं है। निजी डेटा के लिए आदर्श।
  • \n
  • Background: URLSession(configuration: .background(withIdentifier:)) — बैकग्राउंड डाउनलोड/अपलोड के लिए, तब भी जब एप्लिकेशन छोटा हो।
  • \n
\n\n
import Foundation\n\n// सरल सत्र\nlet sharedSession = URLSession.shared\n\n// 30 सेकंड टाइमआउट के साथ कस्टम सत्र\nlet config = URLSessionConfiguration.default\nconfig.timeoutIntervalForRequest = 30\nconfig.timeoutIntervalForResource = 60\nlet customSession = URLSession(configuration: config)\n
\n\n

HTTP अनुरोध बनाना और भेजना

\n

अनुरोध क्लास URLRequest का उपयोग करके बनाया जाता है। इसमें URL, HTTP विधि, हेडर और अनुरोध का बॉडी शामिल है। आइए मुख्य विधियों पर विचार करें: GET और POST।

\n\n

async/await के साथ GET अनुरोध (आधुनिक दृष्टिकोण)

\n

Swift 5.5 से शुरू करके, Apple ने एसिंक्रोनस फ़ंक्शन (async/await) के लिए समर्थन जोड़ा। यह नेटवर्क के साथ काम करने का सबसे संक्षिप्त और सुरक्षित तरीका है।

\n\n
func fetchData(from urlString: String) async throws -> Data {\n    guard let url = URL(string: urlString) else {\n        throw URLError(.badURL)\n    }\n    \n    var request = URLRequest(url: url)\n    request.httpMethod = "GET"\n    request.setValue("application/json", forHTTPHeaderField: "Accept")\n    \n    let (data, response) = try await URLSession.shared.data(for: request)\n    \n    // HTTP स्थिति की जाँच करें\n    guard let httpResponse = response as? HTTPURLResponse,\n          (200...299).contains(httpResponse.statusCode) else {\n        throw URLError(.badServerResponse)\n    }\n    \n    return data\n}\n\n// उपयोग:\nTask {\n    do {\n        let data = try await fetchData(from: "https://api.example.com/users")\n        print("प्राप्त \\(data.count) बाइट्स")\n    } catch {\n        print("त्रुटि: \\(error.localizedDescription)")\n    }\n}\n
\n\n

JSON बॉडी के साथ POST अनुरोध

\n

सर्वर पर डेटा भेजने के लिए POST विधि का उपयोग किया जाता है। अनुरोध का बॉडी आमतौर पर JSON में एन्कोड किया जाता है।

\n\n
struct User: Codable {\n    let name: String\n    let email: String\n}\n\nfunc createUser(_ user: User) async throws -> Data {\n    let url = URL(string: "https://api.example.com/users")!\n    var request = URLRequest(url: url)\n    request.httpMethod = "POST"\n    request.setValue("application                

ब्लॉग

पुस्तक अनुशंसाएँ