تبدیل curl به Swift

دستورات curl را با استفاده از URLSession به کد Swift تبدیل کنید. 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 داخلی اپل برای iOS، macOS، watchOS و tvOS است. این ابزار وظایف داده، دانلودها، آپلودها، WebSocket و انتقال‌های پس‌زمینه را مدیریت می‌کند. نیازی به نصب پکیج نیست — این بخشی از Foundation است. از HTTP/2، کشینگ و مدیریت کوکی پشتیبانی می‌کند. curl2code کد URLSession را برای تمام تبدیل‌های Swift تولید می‌کند.

URLSession در مقابل Alamofire — از کدام استفاده کنم؟

URLSession داخلی است و اکثر نیازها را پوشش می‌دهد — برای جلوگیری از وابستگی به کتابخانه‌های شخص ثالث از آن استفاده کنید. Alamofire امکانات رفاهی اضافه می‌کند: سازنده‌های درخواست زنجیره‌ای، تلاش مجدد خودکار، اعتبارسنجی پاسخ و آپلودهای multipart. برای پروژه‌های کوچک، URLSession کافی است. برای رویکردهای داخلی مشابه، مبدل curl به Kotlin یا curl به Objective-C ما را ببینید.

چگونه احراز هویت را در Swift مدیریت کنیم؟

هدر را روی URLRequest تنظیم کنید: request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization"). برای احراز هویت Basic، با Data("\(user):\(pass)".utf8).base64EncodedString() انکود کنید. curl2code پرچم‌های -u و هدر Bearer را به طور خودکار به کد Swift تبدیل می‌کند.

چگونه داده‌های multipart form را در Swift ارسال کنیم؟

بدنه multipart را به صورت دستی بسازید: یک رشته boundary ایجاد کنید، هر فیلد/فایل را با جداکننده‌های CRLF اضافه کنید و Content-Type: multipart/form-data; boundary=... را تنظیم کنید. برای multipart آسان‌تر، از upload(multipartFormData:) در Alamofire استفاده کنید. curl2code تبدیل پرچم -F را برای URLSession مدیریت می‌کند.

چگونه خطاهای HTTP را در Swift مدیریت کنیم؟

URLSession یک Error اختیاری در completionها برمی‌گرداند — نیل (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 را با کد خطی جایگزین می‌کند. از Task { } برای فراخوانی از محیط‌های همزمان استفاده کنید. برای درخواست‌های همزمان، از async let یا TaskGroup استفاده کنید. برای الگوهای مشابه، curl به Dart را ببینید.

چگونه تایم‌اوت‌ها را در Swift URLSession تنظیم کنیم؟

در URLSessionConfiguration پیکربندی کنید: config.timeoutIntervalForRequest = 30 (برای هر درخواست) و config.timeoutIntervalForResource = 300 (کل). یا request.timeoutInterval = 30 را روی درخواست‌های فردی تنظیم کنید. این‌ها با گزینه‌های --max-time و --connect-timeout در curl مطابقت دارند.

چگونه از یک پروکسی با 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 را با استفاده از curl2code به Swift تبدیل کنید. کد تولید شده از 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 به زبان‌های دیگر