تبدیل curl به R

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

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

  1. 1

    باز کردن DevTools

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

  2. 2

    رفتن به تب Network

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

  3. 3

    کپی به عنوان cURL

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

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

R httr چیست؟

httr محبوب‌ترین پکیج کلاینت HTTP برای R است که برای تعامل با APIهای وب طراحی شده است. این پکیج توابعی مانند GET()، POST()، PUT() را با مدیریت خودکار نوع محتوا و پشتیبانی از OAuth ارائه می‌دهد. با install.packages("httr") نصب می‌شود. curl2code همچنین از httr2، جانشین نسل بعدی آن، پشتیبانی می‌کند.

httr در مقابل httr2 در مقابل پکیج curl — از کدام استفاده کنیم؟

httr پایدار است و به طور گسترده استفاده می‌شود — اکثر آموزش‌های R از آن استفاده می‌کنند. httr2 جایگزین مدرن با سینتکس لوله‌کشی (piped)، تلاش مجدد داخلی و محدودیت نرخ (rate limiting) است. پکیج curl یک بسته‌بندی سطح پایین برای libcurl است. برای پروژه‌های جدید از httr2 و برای سازگاری از httr استفاده کنید. برای گردش کارهای مشابه در علم داده، curl به Python یا curl به Julia را ببینید.

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

برای Bearer: GET(url, add_headers(Authorization = paste("Bearer", token))). برای احراز هویت Basic: GET(url, authenticate(user, pass)). httr همچنین از OAuth 1.0 و 2.0 از طریق oauth1.0_token() و oauth2.0_token() پشتیبانی می‌کند. curl2code فلگ‌های -u و هدر را به سینتکس R تبدیل می‌کند.

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

از POST(url, body = list(file = upload_file("doc.pdf"), desc = "My file"), encode = "multipart") استفاده کنید. httr مرزهای multipart و Content-Type را به صورت خودکار مدیریت می‌کند. برای بدنه‌های JSON، از encode = "json" استفاده کنید. curl2code فلگ‌های -F را به سینتکس multipart در httr تبدیل می‌کند.

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

از stop_for_status(response) برای پرتاب خطا در پاسخ‌های غیر 2xx، از warn_for_status() برای هشدارها، یا message_for_status() برای پیام‌ها استفاده کنید. وضعیت را با status_code(response) بررسی کنید. برای مدیریت خطای برنامه‌نویسی شده، آن را در tryCatch() قرار دهید. httr2 از req_error() برای رفتارهای خطای قابل پیکربندی استفاده می‌کند.

چگونه پاسخ‌های JSON را در R پارس کنیم؟

از content(response, "parsed") برای پارس خودکار JSON به لیست، یا content(response, "text") همراه با jsonlite::fromJSON() برای کنترل بیشتر استفاده کنید. jsonlite داده‌های JSON را به دیتا فریم‌ها، لیست‌ها و بردارهای R تبدیل می‌کند. برای خط لوله‌های تحلیل داده، مستقیماً خروجی را به tibble یا dplyr لوله‌کشی کنید.

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

از GET(url, timeout(30)) برای تایم‌اوت 30 ثانیه‌ای استفاده کنید. httr2 از req_timeout(req, 30) استفاده می‌کند. برای تلاش مجدد در httr2: req_retry(req, max_tries = 3, backoff = ~ 2). httr مکانیزم تلاش مجدد داخلی ندارد — از یک حلقه با tryCatch() استفاده کنید. این‌ها با گزینه --max-time در curl مطابقت دارند.

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

از GET(url, use_proxy("proxy", 8080, username, password)) استفاده کنید. httr گزینه‌های پروکسی libcurl را بسته‌بندی می‌کند. همچنین از متغیرهای محیطی http_proxy و https_proxy پیروی می‌کند. برای پروکسی‌های SOCKS، طرح را مشخص کنید: use_proxy("socks5://proxy:1080"). curl2code فلگ‌های -x را به پیکربندی پروکسی R تبدیل می‌کند.

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

یک دستور curl POST مانند curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL را با استفاده از curl2code به R تبدیل کنید. کد تولید شده از POST(url, body = data, encode = 'json') استفاده می‌کند. curl2code به طور خودکار فلگ‌های -d/--data با محتوای JSON را تشخیص داده و هدر Content-Type مناسب را در کد httr تنظیم می‌کند.

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

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

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

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

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

راهنماهای curl

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