تبدیل curl به Julia

curl2code دستورات curl را با استفاده از HTTP.jl به کد Julia تبدیل می‌کند. این تبدیل برای حفظ حریم خصوصی کامل، در مرورگر شما از طریق WebAssembly انجام می‌شود. برای Python، مبدل curl به Python ما را بررسی کنید. برای R، curl به R را ببینید. در ادامه مثال‌های کاربردی Julia آورده شده است.

نحوه کپی کردن curl از مرورگر

  1. 1

    باز کردن DevTools

    کلید F12 یا Ctrl+Shift+I را فشار دهید تا ابزارهای توسعه‌دهنده مرورگر باز شوند.

  2. 2

    رفتن به تب Network

    روی تب Network کلیک کنید و عملیاتی که باعث ارسال درخواست HTTP می‌شود را انجام دهید.

  3. 3

    کپی به عنوان cURL

    روی درخواست راست‌کلیک کنید ← CopyCopy as cURL. سپس آن را در بالا جایگذاری کنید.

سوالات متداول

Julia HTTP.jl چیست؟

HTTP.jl پکیج استاندارد کلاینت و سرور HTTP برای Julia است. این پکیج یک API سطح بالا و ساده با قابلیت‌های مدیریت اتصال (connection pooling)، مدیریت کوکی و پشتیبانی از استریمینگ ارائه می‌دهد. با دستور using Pkg; Pkg.add("HTTP") نصب می‌شود. این کتابخانه به خوبی با سیستم multiple dispatch در Julia ادغام می‌شود. curl2code از HTTP.jl برای تمام تبدیل‌های Julia استفاده می‌کند.

HTTP.jl در مقابل Downloads.jl در مقابل LibCURL.jl — از کدام استفاده کنیم؟

HTTP.jl یک کلاینت HTTP با تمام ویژگی‌ها است — برای APIها و درخواست‌های سفارشی از آن استفاده کنید. Downloads.jl یک ماژول کتابخانه استاندارد برای دانلودهای ساده فایل است. LibCURL.jl برای ویژگی‌های خاص curl، کتابخانه libcurl را بسته‌بندی می‌کند. برای اکثر کارها، HTTP.jl انتخاب مناسبی است. برای کلاینت‌های محاسبات علمی مشابه، curl به Python یا curl به R را ببینید.

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

هدرها را به صورت برداری از جفت‌ها ارسال کنید: HTTP.get(url, ["Authorization" => "Bearer $token"]). برای احراز هویت Basic: ["Authorization" => "Basic $(base64encode("$user:$pass"))"]. درون‌ریزی رشته‌ای (interpolation) در Julia با $ ساخت هدر را تمیزتر می‌کند. curl2code فلگ‌های احراز هویت را به سینتکس Julia تبدیل می‌کند.

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

از HTTP.Form استفاده کنید: HTTP.post(url, body=HTTP.Form(["file" => open("doc.pdf"), "desc" => "My file"])). کتابخانه HTTP.jl انکودینگ multipart، مرزها (boundaries) و Content-Type را به صورت خودکار مدیریت می‌کند. curl2code فلگ‌های -F را به سینتکس HTTP.jl Form تبدیل می‌کند.

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

به طور پیش‌فرض، HTTP.jl در پاسخ‌های غیر 2xx خطای HTTP.StatusError پرتاب می‌کند. با تنظیم status_exception=false این قابلیت را غیرفعال کنید تا پاسخ را مستقیماً دریافت کنید. از try ... catch e برای مدیریت خطا استفاده کنید. برای کد HTTP، مقدار e.status را بررسی کنید. خطاهای شبکه HTTP.IOError پرتاب می‌کنند.

چگونه درخواست‌های HTTP همزمان در Julia ایجاد کنیم؟

از تسک‌های @async استفاده کنید: tasks = [@async HTTP.get(url) for url in urls]، سپس responses = fetch.(tasks). برای موازی‌سازی واقعی، از Threads.@threads یا Distributed استفاده کنید. تسک‌های مبتنی بر کوروتین در Julia برای درخواست‌های همزمان محدود به I/O بسیار کارآمد هستند.

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

کلمه کلیدی readtimeout را پاس دهید: HTTP.get(url, readtimeout=30). برای تایم‌اوت اتصال، از connect_timeout استفاده کنید. برای تلاش مجدد، از retry=true با retries=3 استفاده کنید. HTTP.jl دارای قابلیت تلاش مجدد داخلی با عقب‌نشینی اکسپوننشیال (exponential backoff) است. این‌ها با --max-time و --connect-timeout در curl مطابقت دارند.

چگونه از پروکسی در Julia استفاده کنیم؟

کلمه کلیدی proxy را پاس دهید: HTTP.get(url, proxy="http://proxy:8080"). همچنین HTTP.jl به طور پیش‌فرض از متغیرهای محیطی HTTP_PROXY و HTTPS_PROXY پیروی می‌کند. برای پروکسی‌های دارای احراز هویت، اعتبارنامه‌ها را در URL پروکسی بگنجانید: http://user:pass@proxy:8080.

چگونه یک درخواست POST با بدنه JSON در Julia ارسال کنیم؟

یک دستور curl POST مانند curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL را با استفاده از curl2code به Julia تبدیل کنید. کد تولید شده از HTTP.post(url, ['Content-Type' => 'application/json'], JSON3.write(data)) استفاده می‌کند. curl2code به طور خودکار فلگ‌های -d/--data با محتوای JSON را تشخیص داده و هدر Content-Type مناسب را در کد HTTP.jl تنظیم می‌کند.

چگونه احراز هویت با Bearer token را در Julia اضافه کنیم؟

دستور curl -H "Authorization: Bearer YOUR_TOKEN" URL را به curl2code بدهید تا کد HTTP.jl را با هدر احراز هویت تولید کند: ['Authorization' => 'Bearer YOUR_TOKEN']. curl2code توکن‌های Bearer را از هر دو فلگ -H "Authorization: Bearer ..." و --oauth2-bearer تشخیص می‌دهد. برای Basic auth، از -u user:pass استفاده کنید.

چگونه هدر Content-Type را در Julia تنظیم کنیم؟

curl2code دستور curl -H "Content-Type: application/json" URL را به کد HTTP.jl با هدر مناسب تبدیل می‌کند: ['Content-Type' => 'application/json']. برای داده‌های -d، دستور curl به طور پیش‌فرض از application/x-www-form-urlencoded استفاده می‌کند؛ برای آپلودهای فرم -F، از multipart/form-data استفاده می‌کند. curl2code هر کدام را به API صحیح HTTP.jl نگاشت می‌کند.

لینک‌های مفید

راهنماهای curl

تبدیل curl به زبان‌های دیگر