تبدیل curl به Ruby
curl2code دستورات curl را با استفاده از کتابخانه استاندارد net/http به کد Ruby تبدیل میکند. همه چیز برای حفظ حریم خصوصی کامل، به صورت محلی در مرورگر شما از طریق WebAssembly اجرا میشود. اگر Python را ترجیح میدهید، مبدل curl به Python ما را بررسی کنید. برای Elixir، curl به Elixir را ببینید. در ادامه مثالهای کاربردی Ruby آورده شده است.
نحوه کپی کردن curl از مرورگر
- 1
باز کردن DevTools
کلید F12 یا Ctrl+Shift+I را فشار دهید تا ابزارهای توسعهدهنده مرورگر باز شوند.
- 2
رفتن به تب Network
روی تب Network کلیک کنید و عملیاتی که باعث ارسال درخواست HTTP میشود را انجام دهید.
- 3
کپی به عنوان cURL
روی درخواست راستکلیک کنید ← Copy ← Copy as cURL. سپس آن را در بالا جایگذاری کنید.
سوالات متداول
Ruby net/http چیست؟
کتابخانه net/http در Ruby کلاینت HTTP استاندارد است که در هر نصب Ruby گنجانده شده است. این کتابخانه GET، POST، آپلودهای چندبخشی، SSL و هدرهای سفارشی را مدیریت میکند. نیازی به نصب gem نیست. curl2code همچنین از HTTParty پشتیبانی میکند، یک gem محبوب که الگوهای رایج HTTP را با یک API تمیز و تعریفی ساده میکند.
net/http در مقابل HTTParty در مقابل Faraday — از کدام استفاده کنم؟
کتابخانه net/http داخلی و بدون وابستگی است — برای کارها و اسکریپتهای ساده عالی است. HTTParty یک DSL تمیز با پارس خودکار JSON فراهم میکند. Faraday میانافزار، الگوهای آداپتور و بیشترین انعطافپذیری را ارائه میدهد. برای سادگی مشابه در اسکریپتنویسی، مبدل curl به Python یا curl به PHP ما را ببینید.
چگونه احراز هویت را در Ruby مدیریت کنیم؟
با net/http: request["Authorization"] = "Bearer token". برای Basic auth: request.basic_auth("user", "pass"). HTTParty از headers: { "Authorization" => "Bearer token" } یا basic_auth: { username: "user", password: "pass" } استفاده میکند. curl2code هر دو فلگ -u و هدر را مدیریت میکند.
چگونه دادههای فرم چندبخشی را در Ruby ارسال کنیم؟
با net/http، از gem multipart-post استفاده کنید یا بدنه چندبخشی را به صورت دستی با استفاده از Net::HTTP::Post با رشتههای مرز بسازید. HTTParty این کار را با body: { file: File.open("path") } ساده میکند. curl2code فلگهای -F را برای هر دو نوع کتابخانه تبدیل میکند.
چگونه خطاهای HTTP را در Ruby مدیریت کنیم؟
با net/http، response.is_a?(Net::HTTPSuccess) را چک کنید یا از response.value استفاده کنید که برای وضعیتهای غیر 2xx استثنا ایجاد میکند. HTTParty یک شیء پاسخ با متدهای .success? و .code برمیگرداند. برای اتصالات پایدار، Errno::ECONNREFUSED و Net::ReadTimeout را نجات (rescue) دهید.
چگونه درخواستهای HTTP همزمان در Ruby ارسال کنیم؟
کتابخانه استاندارد Ruby همگام است. از Thread.new { ... } برای همزمانی پایه یا gem concurrent-ruby برای استخر رشتهها استفاده کنید. برای I/O ناهمگام، از async-http با gem Async استفاده کنید. Typhoeus صفبندی درخواستهای موازی را فراهم میکند. برای پشتیبانی داخلی از حالت ناهمگام، curl به Elixir را ببینید.
چگونه مهلت زمانی را در Ruby تنظیم کنیم؟
با net/http: http.open_timeout = 10 (اتصال) و http.read_timeout = 30 (پاسخ). HTTParty گزینه timeout: 30 را میپذیرد. اینها به --connect-timeout و --max-time در curl نگاشت میشوند. همیشه مهلت زمانی را تنظیم کنید تا از معلق ماندن نامحدود درخواستها جلوگیری کنید.
چگونه از یک پروکسی در Ruby استفاده کنیم؟
با net/http: Net::HTTP.new(host, port, proxy_host, proxy_port). یا متغیرهای محیطی http_proxy و https_proxy را تنظیم کنید — Ruby به طور خودکار از اینها پیروی میکند. HTTParty از گزینه http_proxy: 'http://proxy:8080' استفاده میکند. curl2code فلگهای -x را به نحو صحیح در Ruby تبدیل میکند.
چگونه یک درخواست POST با بدنه JSON در Ruby ارسال کنیم؟
یک دستور curl POST مانند curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL را با استفاده از curl2code به Ruby تبدیل کنید. کد تولید شده از Net::HTTP.post(uri, data.to_json, 'Content-Type' => 'application/json') استفاده میکند. curl2code به طور خودکار فلگهای -d/--data با محتوای JSON را تشخیص داده و هدر Content-Type مناسب را در کد net/http تنظیم میکند.
چگونه احراز هویت با Bearer token را در Ruby اضافه کنیم؟
دستور curl -H "Authorization: Bearer YOUR_TOKEN" URL را به curl2code بدهید تا کد net/http را با هدر احراز هویت تولید کند: req['Authorization'] = 'Bearer YOUR_TOKEN'. curl2code توکنهای Bearer را از هر دو فلگ -H "Authorization: Bearer ..." و --oauth2-bearer تشخیص میدهد. برای Basic auth، از -u user:pass استفاده کنید.
چگونه هدر Content-Type را در Ruby تنظیم کنیم؟
curl2code دستور curl -H "Content-Type: application/json" URL را به کد net/http با هدر مناسب تبدیل میکند: req['Content-Type'] = 'application/json'. برای دادههای -d، دستور curl به طور پیشفرض از application/x-www-form-urlencoded استفاده میکند؛ برای آپلودهای فرم -F، از multipart/form-data استفاده میکند. curl2code هر کدام را به API صحیح net/http نگاشت میکند.