cURL से Swift
curl कमांड चिपकाइए और वही अनुरोध करने वाला Swift URLSession कोड पाइए।
cURL से Swift आपका कमांड ब्राउज़र में ही पार्स करता है। टोकन और प्रमाण-पत्र आपके डिवाइस से बाहर नहीं जाते।
API क्लाइंट आज़माइए
cURL से Swift के बारे में
API का दस्तावेज़ curl बोलता है और iOS ऐप URLSession, और हाथ से अनुवाद करना वह दोहराव वाला काम है जिसमें छोटी ग़लतियाँ आसानी से हो जाती हैं — एक हेडर छूट गया, बॉडी स्ट्रिंग रह गई जबकि JSON चाहिए था, या ऑथ फ़्लैग चुपचाप छूट गया। यह कन्वर्टर curl कमांड को वैसे ही पढ़ता है जैसे curl ख़ुद पढ़ता है और सिर्फ़ Foundation पर टिका Swift देता है। JSON बॉडी अपारदर्शी स्ट्रिंग के बजाय Swift शब्दकोश बनती है।
विशेषताएँ
- -X, -H, -d, --data-raw, --json, -u, -b, -A, -e और -G को curl जैसा पढ़ता है
- ऐसा URLSession कोड जिसे Foundation के अलावा कुछ नहीं चाहिए
- JSON बॉडी Swift शब्दकोश में, JSONSerialization से एन्कोड
- बेसिक ऑथ प्रमाण-पत्रों से दोबारा बनता है, base64EncodedString के साथ
- बॉडी होने पर मेथड ख़ुद तय होता है, या -X से आता है
- उन curl फ़्लैग की चेतावनी जिनका Swift में ठीक जोड़ नहीं
- कोड कॉपी कीजिए या .swift फ़ाइल सहेजिए
cURL से Swift का उपयोग कैसे करें
- curl कमांड अपने फ़्लैग और बॉडी के साथ चिपकाइए
- दाईं ओर बना हुआ Swift पढ़िए
- चेतावनियाँ देखिए कि कौन-सा फ़्लैग अनूदित नहीं हो पाया
- कोड कॉपी कीजिए या .swift फ़ाइल के रूप में सहेजिए
उदाहरण
इनपुट
curl https://api.example.com/users -H 'Content-Type: application/json' -d '{"name":"Ada"}'
आउटपुट
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
मेथड बॉडी देखकर तय होता है, ठीक वैसे जैसे curl तय करता।
सामान्य त्रुटियाँ और समस्या निवारण
- curl में अनुरोध चलता है पर ऐप में विफल होता है। — App Transport Security देखिए। iOS डिफ़ॉल्ट पर सादा HTTP रोकता है, इसलिए http:// एंडपॉइंट के लिए Info.plist में छूट या https URL चाहिए।
- कोड बनता है पर कुछ छापता नहीं। — URLSession अतुल्यकालिक है। कमांड-लाइन उपकरण में कंप्लीशन हैंडलर चलने से पहले प्रक्रिया ख़त्म हो जाती है।
- -k या --insecure फ़्लैग अनदेखा हो गया। — जानबूझकर। प्रमाणपत्र जाँच छोड़ने के लिए URLSessionDelegate चाहिए और यह फ़ैसला साफ़ तरीक़े से लेना बेहतर है।
- बॉडी के विशेष अक्षर ग़लत आ रहे हैं। — मूल कमांड की उद्धरण-व्यवस्था देखिए। दोहरे उद्धरण वाली बॉडी पहले ही आपके शेल से गुज़र चुकी होती है।
अक्सर पूछे जाने वाले प्रश्न
- क्या बना हुआ Swift iOS, macOS और Linux पर चलेगा?
- हाँ। वह Foundation का URLSession इस्तेमाल करता है, जो Apple प्लेटफ़ॉर्म पर और Linux में swift-corelibs-foundation में उपलब्ध है।
- क्या कंप्लीशन हैंडलर के बजाय async/await कोड मिल सकता है?
- बना हुआ रूप कंप्लीशन हैंडलर वाली डेटा टास्क इस्तेमाल करता है, जो हर जगह चलती है। उसे एक पंक्ति में बदला जा सकता है।
- JSON बॉडी कैसे संभाली जाती है?
- उसे पार्स करके Swift [String: Any] शब्दकोश बनाया जाता है, फिर JSONSerialization से एन्कोड।
- -b फ़्लैग की कुकीज़ का क्या होता है?
- वे अनुरोध पर Cookie हेडर बन जाती हैं। ध्यान रहे कि URLSession का अपना कुकी भंडार होता है।
- क्या Swift में बदलते समय curl कमांड अपलोड होता है?
- नहीं। कमांड आपके ब्राउज़र में ही पार्स होता है और कोड वहीं बनता है — दस्तावेज़ों और लॉग के curl कमांड में अक्सर असली API कुंजी होती है।
संबंधित टूल
सभी ArrayKit टूल