تبدیل curl به Dart
دستورات curl را با استفاده از پکیج http به کد Dart تبدیل کنید. curl2code کاملاً در مرورگر شما از طریق WebAssembly اجرا میشود — دادههای شما خصوصی میمانند. برای Kotlin، مبدل curl به Kotlin ما را امتحان کنید. برای Swift، curl به Swift را ببینید. در ادامه مثالهای آماده Dart برای Flutter آورده شده است.
نحوه کپی کردن curl از مرورگر
- 1
باز کردن DevTools
کلید F12 یا Ctrl+Shift+I را فشار دهید تا ابزارهای توسعهدهنده مرورگر باز شوند.
- 2
رفتن به تب Network
روی تب Network کلیک کنید و عملیاتی که باعث ارسال درخواست HTTP میشود را انجام دهید.
- 3
کپی به عنوان cURL
روی درخواست راستکلیک کنید ← Copy ← Copy as cURL. سپس آن را در بالا جایگذاری کنید.
سوالات متداول
پکیج http در Dart چیست؟
پکیج http کلاینت HTTP پیشنهادی برای Dart و Flutter است. این پکیج یک API ساده و مبتنی بر Future برای GET، POST، آپلودهای multipart و استریمینگ ارائه میدهد. با dart pub add http نصب کنید. این پکیج در تمام پلتفرمهای Dart — موبایل، وب و سرور — کار میکند. curl2code از آن به عنوان پیشفرض برای تبدیلهای Dart استفاده میکند.
http در مقابل dio در مقابل HttpClient — از کدام استفاده کنم؟
http ساده و سبک است — برای درخواستهای پایه عالی است. dio قابلیتهایی مانند interceptors، FormData، پیشرفت دانلود و لغو درخواست را اضافه میکند. HttpClient (dart:io) سطح پایینتر و داخلی است اما پرگوتر است. برای اپلیکیشنهای Flutter که به interceptor نیاز دارند، dio را انتخاب کنید. برای کلاینتهای موبایل مشابه، curl به Kotlin یا curl به Swift را ببینید.
چگونه احراز هویت را در Dart مدیریت کنیم؟
هدرها را به درخواست پاس دهید: http.get(url, headers: { "Authorization": "Bearer $token" }). برای احراز هویت Basic، با base64Encode(utf8.encode("$user:$pass")) انکود کنید. curl2code پرچمهای -u و -H 'Authorization' را به کد Dart با هدرهای دارای تایپ صحیح تبدیل میکند.
چگونه دادههای multipart form را در Dart ارسال کنیم؟
از http.MultipartRequest استفاده کنید: درخواست را ایجاد کنید، فیلدها را با request.fields['key'] = 'value' و فایلها را با request.files.add(await http.MultipartFile.fromPath('file', path)) اضافه کنید. سپس با request.send() ارسال کنید. curl2code پرچمهای -F را به این الگو تبدیل میکند.
چگونه خطاهای HTTP را در Dart مدیریت کنیم؟
پکیج http در صورت بروز خطاهای HTTP استثنا (exception) پرتاب نمیکند — response.statusCode را به صورت دستی بررسی کنید. فراخوانیها را برای SocketException (خطاهای شبکه) و TimeoutException در try/catch قرار دهید. از http.Client با close() برای پاکسازی مناسب منابع در اپلیکیشنهای طولانیمدت استفاده کنید.
چگونه از async/await با Dart HTTP استفاده کنیم؟
تمام متدهای HTTP در Dart یک Future برمیگردانند — از final response = await http.get(Uri.parse(url)) استفاده کنید. قابلیت async/await در Dart بخشی از خود زبان است. برای درخواستهای موازی، از Future.wait([request1, request2]) استفاده کنید. برای الگوهای ناهمزمان مشابه، curl به TypeScript یا curl به Swift را ببینید.
چگونه تایماوتها را در Dart تنظیم کنیم؟
از متد .timeout() روی هر Future استفاده کنید: http.get(url).timeout(Duration(seconds: 30)). این کار در صورت تجاوز از زمان، TimeoutException پرتاب میکند. برای کنترل بیشتر، یک http.Client ایجاد کرده و از طریق HttpClient زیرین از dart:io با connectionTimeout پیکربندی کنید.
چگونه از یک پروکسی در Dart استفاده کنیم؟
از HttpClient از dart:io استفاده کنید: HttpClient()..findProxy = (uri) => 'PROXY proxy:8080'. برای پکیج http، یک IOClient سفارشی بسازید که HttpClient پیکربندی شده را در بر میگیرد. Dart همچنین از متغیرهای محیطی HTTP_PROXY و NO_PROXY پیروی میکند.
چگونه یک درخواست POST با بدنه JSON در Dart ارسال کنیم؟
یک دستور curl POST مانند curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL را با استفاده از curl2code به Dart تبدیل کنید. کد تولید شده از http.post(uri, body: jsonEncode(data), headers: {'Content-Type': 'application/json'}) استفاده میکند. curl2code به طور خودکار فلگهای -d/--data با محتوای JSON را تشخیص داده و هدر Content-Type مناسب را در کد http تنظیم میکند.
چگونه احراز هویت با Bearer token را در Dart اضافه کنیم؟
دستور curl -H "Authorization: Bearer YOUR_TOKEN" URL را به curl2code بدهید تا کد http را با هدر احراز هویت تولید کند: headers: {'Authorization': 'Bearer YOUR_TOKEN'}. curl2code توکنهای Bearer را از هر دو فلگ -H "Authorization: Bearer ..." و --oauth2-bearer تشخیص میدهد. برای Basic auth، از -u user:pass استفاده کنید.
چگونه هدر Content-Type را در Dart تنظیم کنیم؟
curl2code دستور curl -H "Content-Type: application/json" URL را به کد http با هدر مناسب تبدیل میکند: headers: {'Content-Type': 'application/json'}. برای دادههای -d، دستور curl به طور پیشفرض از application/x-www-form-urlencoded استفاده میکند؛ برای آپلودهای فرم -F، از multipart/form-data استفاده میکند. curl2code هر کدام را به API صحیح http نگاشت میکند.