تحويل curl إلى Swift

قم بتحويل أوامر curl إلى كود Swift باستخدام URLSession. يعمل curl2code بالكامل في متصفحك عبر WebAssembly — بياناتك تبقى خاصة. لـ Kotlin (Android)، جرب محول curl إلى Kotlin. لـ Objective-C، راجع curl إلى Objective-C. أدناه أمثلة Swift جاهزة للاستخدام.

كيفية نسخ curl من متصفحك

  1. 1

    افتح أدوات المطور (DevTools)

    اضغط على F12 أو Ctrl+Shift+I لفتح أدوات مطور المتصفح.

  2. 2

    انتقل إلى علامة تبويب الشبكة (Network)

    انقر فوق علامة التبويب Network وقم بالإجراء الذي يؤدي إلى إرسال طلب HTTP.

  3. 3

    نسخ كـ cURL

    انقر بزر الماوس الأيمن على الطلب ← CopyCopy as cURL. ثم قم بلصقه أعلاه.

الأسئلة الشائعة

ما هي Swift URLSession؟

URLSession هو عميل HTTP المدمج من Apple لأنظمة iOS و macOS و watchOS و tvOS. يتعامل مع مهام البيانات، التنزيلات، الرفع، WebSocket، وعمليات النقل في الخلفية. لا حاجة لتثبيت أي حزمة — فهو جزء من Foundation. يدعم HTTP/2، التخزين المؤقت (caching)، وإدارة ملفات تعريف الارتباط (cookies). يقوم curl2code بتوليد كود URLSession لجميع تحويلات Swift.

URLSession مقابل Alamofire — أيهما يجب أن أستخدم؟

URLSession مدمج ويغطي معظم الاحتياجات — استخدمه لتجنب الاعتمادات الخارجية. Alamofire يضيف سهولة في الاستخدام: بناء طلبات متسلسل، إعادة المحاولة التلقائية، التحقق من الاستجابة، ورفع البيانات متعددة الأجزاء (multipart). للمشاريع الصغيرة، URLSession كافٍ. لنهج مدمج مماثل، راجع محول curl إلى Kotlin أو curl إلى Objective-C.

كيفية التعامل مع المصادقة في Swift؟

قم بتعيين الترويسة (header) على URLRequest: request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization"). للمصادقة الأساسية (Basic auth)، قم بالترميز باستخدام Data("\(user):\(pass)".utf8).base64EncodedString(). يقوم curl2code بتحويل أعلام -u وترويسة Bearer إلى كود Swift تلقائيًا.

كيفية إرسال بيانات النموذج متعدد الأجزاء (multipart form data) في Swift؟

قم ببناء جسم الطلب يدويًا: قم بتوليد سلسلة حدود (boundary string)، وألحق كل حقل/ملف بفاصل CRLF، ثم اضبط Content-Type: multipart/form-data; boundary=.... لسهولة أكبر، استخدم upload(multipartFormData:) من Alamofire. يتعامل curl2code مع تحويل علم -F لـ URLSession.

كيفية التعامل مع أخطاء HTTP في Swift؟

يعيد URLSession كائن Error اختياري في عمليات الإكمال — تحقق مما إذا كان nil. قم بتحويل الاستجابة إلى HTTPURLResponse وتحقق من statusCode. مع async/await (iOS 15+)، استخدم try await URLSession.shared.data(for: request) داخل كتلة do/catch لمعالجة نظيفة للأخطاء.

كيفية استخدام async/await مع URLSession؟

يدعم Swift 5.5+ خاصية async/await بشكل أصلي: let (data, response) = try await URLSession.shared.data(for: request). هذا يستبدل إغلاقات معالج الإكمال (completion handler closures) بكود خطي. استخدم Task { } للاستدعاء من السياقات المتزامنة. للطلبات المتزامنة، استخدم async let أو TaskGroup. لأنماط مماثلة، راجع curl إلى Dart.

كيفية ضبط المهلة (timeouts) في Swift URLSession؟

قم بالتهيئة على URLSessionConfiguration: config.timeoutIntervalForRequest = 30 (لكل طلب) و config.timeoutIntervalForResource = 300 (الإجمالي). أو اضبط request.timeoutInterval = 30 للطلبات الفردية. هذه تقابل خيارات curl --max-time و --connect-timeout.

كيفية استخدام بروكسي مع URLSession؟

اضبط البروكسي في URLSessionConfiguration: config.connectionProxyDictionary = [kCFProxyHostNameKey: "proxy", kCFProxyPortNumberKey: 8080]. لبروكسي SOCKS، استخدم مفاتيح kCFStreamPropertySOCKSProxy. يحترم URLSession أيضًا إعدادات البروكسي على مستوى النظام المهيأة في إعدادات macOS/iOS.

كيف يمكن إرسال طلب POST مع جسم JSON في Swift؟

قم بتحويل أمر curl POST مثل curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL إلى Swift باستخدام curl2code. يستخدم الكود الناتج request.httpBody = try JSONEncoder().encode(data). يقوم curl2code تلقائيًا باكتشاف وسوم -d/--data التي تحتوي على محتوى JSON ويضبط ترويسة Content-Type المناسبة في كود URLSession.

كيف يمكن إضافة مصادقة Bearer token في Swift؟

قم بتمرير curl -H "Authorization: Bearer YOUR_TOKEN" URL إلى curl2code وسيقوم بإنشاء كود URLSession مع ترويسة المصادقة: request.setValue("Bearer YOUR_TOKEN", forHTTPHeaderField: "Authorization"). يكتشف curl2code رموز Bearer من كل من وسوم -H "Authorization: Bearer ..." و --oauth2-bearer. بالنسبة لـ Basic auth، استخدم -u user:pass.

كيف يمكن ضبط ترويسة Content-Type في Swift؟

يقوم curl2code بتحويل curl -H "Content-Type: application/json" URL إلى كود URLSession مع الترويسة المناسبة: request.setValue("application/json", forHTTPHeaderField: "Content-Type"). بالنسبة لبيانات -d، يستخدم curl افتراضيًا application/x-www-form-urlencoded؛ أما بالنسبة لرفع النماذج باستخدام -F، فإنه يستخدم multipart/form-data. يقوم curl2code بربط كل منها بـ API الصحيح في URLSession.

روابط مفيدة

أدلة curl

تحويل curl إلى لغات أخرى