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 पढ़िए
चेतावनियाँ देखिए कि कौन-सा फ़्लैग अनूदित नहीं हो पाया
मेथड बॉडी देखकर तय होता है, ठीक वैसे जैसे 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 कुंजी होती है।
संबंधित टूल
cURL से Fetch — curl कमांड को JavaScript fetch() कॉल में कन्वर्ट करें।